티스토리 뷰
📌 프로세스
📝 프로세스란?
- 실행중인 프로그램.
- 디스크에 저장된 실행 파일이 메모리에 적재될 때 비로소 프로세스가 된다.
📝 메모리 상에서의 프로세스 (프로세스의 주소 공간)
프로세스의 주소 공간은 크게 4 세션으로 구분된다.
텍스트 세션 : 실행코드
데이터 세션 : 전역 변수
힙 세션 : 프로그램 실행 시 동적으로 할당되는 메모리
스택 세션 : 함수 호출 시 임시 데이터 저장 (함수 매개변수, 반환 주소, 지역 변수)
💡 힙 영역 ? Heap
사용자가 관리할 수 있는, 관리해야하는 힙 영역.
ex. 대용량 다운로드 사례가 발생하면,heap 영역에서 개발자는 메모리 영역을 크게 설정하여 OOM(out of memory)를 막을 수있음.
📝 프로세스 상태 별 설명
new : 프로세스 생성 중
running : 명령어들이 실행 중
waiting : 프로세스가 어떤 사건이 일어나기를 기다림
ready : 프로세스 처리기에 할당 되기를 기다림
terminated : 프로세스 실행이 종료
📝 프로세스는 운영체제에서 프로세스 제어 블록(Process Control Block, PCB) 에 의해 표현됨.
Process state : 프로세스 상태, New, Ready, Running, Waiting
Program counter : 프로세스가 다음에 실행할 명령어 주소
cpu register : 누산기, 인덱스 레지스터, 스택 레지스터 등
-> 인터럽트 일어나면 그 전에 진행중인 일들 저장.
memory limits : 기준 레지스터와 limit 레지스터의 값, 페이지 테이블, 세그먼드 테이블
list of open files : cpu가 할일들 ..
스케쥴링 큐.. 등
📌 프로세스 스케쥴링
OS의 목적은 CPU가 놀지 않도록 스케쥴링하는게 중요함.
그래서 프로세스 스케쥴러는 CPU에서 실행가능한 여러 프로세스들 중에서 하나의 프로세스 선택.
⭐️ 스케쥴링 큐
프로세스가 시스템에 들어오면 Job Queue에 적재.
준비 완료 상태에서 실행에 대기하는 프로세스들은 Ready Queue에 적재.
특정 입출력 장치를 대기하는 프로세스들의 리스트는 Device Queue(I/O Queue)에 적재.
새로운 프로세스는 ready queue에서 대기.
프로세스들은 다양하게 처리됨.
- 입출력
- 시분할
- 자식프로세스 생성
- 인터럽트 때문에 대기되기도
이 과정 반복되거나 끝나거나..
📝 프로세스 스케쥴러 종류
단기 스케쥴러
- 계속 프로세스 선택되 몇 초 단위로 실행
- ready queue에 있는 프로세스들 중 어떤걸 실행할지 고름.
- CPU 스케쥴러
중기 스케쥴러
- 메모리에서 프로세스들을 제거, 혹은 완화하여 장기 스케쥴러와 단기 스케쥴러의 일을 적절하게 분배하도록 함.
- 몇 분 단위로 발생
- 스와핑 (Swapping) 수행.
장기 스케쥴러
- 잡 스케쥴러 : 하드웨어에서 메모리로 프로세스 로드하는 역할
- 실행빈도 낮음
- 메모리상의 프로제스 수를 제어
- 입출력 중심 + CPU 중심 적절한 혼합 중요.
📌 컨텍스트 스위칭
인터럽트 개념 다시 등장
인터럽트는 운영체제가 CPU를 현재 작업에서 빼앗아 커널 루틴을 실행할 수 있게 함.
종료 후 본래 작업 중이던 프로세스를 재개함.
💡 그러면 재개하려면?
어떤 값을 저장해야할까? -> 실행 중이던 프로세스의 문맥 (context)
어느 곳에 저장해야할까? -> PCB
이 작업의 명칭은 -> 컨텍스트 스위칭
문맥 (context)
- CPU 레지스터 값, 프로세스의 상태, 메모리의 관리 정보 등을 포함.
컨텍스트 스위치가 진행될 동안의 시스템
- 시스템은 그동안 유용한 일을 하지 못함.
- 컨텍스트 스위치의 소요 시간은 순수한 오버헤드
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 소켓 통신, 서버 - 클라이언트 통신, RPC (2) | 2023.10.23 |
---|---|
[운영체제] 프로세스 간 통신 (1) | 2023.10.23 |
[운영체제] 프로세스 연산(생성 / 종료) (0) | 2023.10.22 |
[운영체제] 운영체제의 서비스, 시스템 콜 (0) | 2023.10.21 |
[운영체제] 1. 운영체제와 컴퓨터 (0) | 2023.10.21 |
- Total
- Today
- Yesterday
- 백엔드부트캠프
- qjzl
- 패스트캠퍼스
- be
- springboot
- 데이터베이스
- 부트캠프
- 커리어멘토링
- 그룹스터디
- 백엔드개발자
- #국비지원취업
- 카카오API
- 백엔드
- boj
- TiL
- 프로젝트후기
- 스터디후기
- Java
- 자료구조 #스택 #큐 #덱 #선형자료구조
- 자료구조
- 국비지원취업
- 국비지원캠프
- 그룹스터디워크샵
- 야놀자X패스트캠퍼스부트캠프
- 국비지원
- 채팅기능개발
- 백준
- 과정중간회고
- 패스트캠퍼스강의
- 야놀자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |