커널 영역(kernel space)
적재 <-> 사용자 영역(user space)
사용자 프로그램 적재커널(kernel)
: 운영체제 핵심 서비스 담당사용자 인터페이스(UI; ex. GUI, CLI)
는 운영체제가 제공하는 서비스이지만 커널에 포함되지 않음이중 모드(dual mode)
: CPU의 명령어 실행 모드.사용자 모드(user mode)
: 운영체제 서비스를 제공받을 수 없음커널 모드(kernel mode)
: 시스템 호출(System call)
*을 통해 운영체제 서비스를 제공받을 수 있음시스템 호출(System call)
: 소프트웨어 인터럽트의 일종프로세스(Process)
: 실행 중인 프로그램CPU
: 여러 프로세스들의 CPU 사용 관리 -> CPU scheduling
Memory
: 새로운 프로세스 실행시 메모리 적재, 메모리가 부족한 경우의 처리 등 메모리 관리I/O Device
: 입출력 장치가 CPU 에 하드웨어 인터럽트 요청 시그널을 보내는 경우 CPU 는 운영체제의 커널 영역에 있는 인터럽트 서비스 루틴
실행.파일 시스템(File system)
윈도우
: 작업 관리자 / 유닉스
: ps
명령어foreground process
: 사용자가 보는 앞에서 실행되는 프로세스background process
: 사용자가 볼 수 없지만 실행 중인 프로세스daemon
: 사용자와 상호 작용 없이 정해진 일만 수행. (윈도우 계열 -> service
)PCB
에 담기는 정보Process ID
Register Value
Process Status
CPU Scheduling Info
Memory Info
File / IO Device Info
문맥(context)
*을 PCB
에 백업하고 새로운 프로세스를 실행하기 위한 문맥
을 PCB
로부터 복구하여 새로운 프로세스를 실행하는 것문맥(Context)
: 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보 -> PCB
에 기록텍스트 영역(text segment)
라고도 부름CPU가 실행할 명령어 (기계어)
저장읽기 전용
공간. (CPU가 실행할 명령어가 저장되므로 쓰기 금지)코드 영역
과 더불어 크기가 고정되어 있는 정적 할당 영역
힙 영역
, 스택 영역
크기가 변하는 동적 할당 영역
메모리 누수(Memory leak)
발생매개 변수
, 지역 변수
등이 저장되는 공간생성 상태(New)
준비 상태(Ready)
실행 상태(Running)
대기 상태(Blocked)
종료 상태(Terminated)
시스템 호출(ex. fork()
, exec()
) 을 통해 실행 도중 다른 프로세스 생성 가능
부모 프로세스(Parent Process)
: 시스템 콜을 사용한 프로세스자식 프로세스(Child Process)
: 시스템 콜에 의해 새로 생성된 프로세스프로세스 계층 구조
: 생성된 프로세스 간의 관계를 나타낸 것 -> pstree
명령을 통해 확인가능
init
(Unix 계열), systemd
(Linux 계열), launchd
(macOS 계열).fork()
를 통해 프로세스 복제 -> exec()
를 통해 생성된 프로세스의 메모리 공간을 다른 프로그램으로 덮어씀스레드(Thread)
: 프로세스
를 구성하는 실행의 흐름 단위단일 스레드 프로세스
: 프로세스를 구성하는 실행 흐름 단위가 하나멀티프로세스
: 여러 프로세스를 동시에 실행하는 것
멀티스레드
: 여러 스레드로 한 프로세스를 동시에 실행하는 것
둘 이상의 작업이 동일한 데이터에 대한 접근이 필요한 경우 멀티스레드
가 멀티 프로세스
에 비해 더 유리함
한정된 자원(CPU)
을 공정하고 효율적으로 사용하기 위해 각 프로세스에 우선순위
를 부여함.
프로세스 구분
입출력 집중 프로세스 (I/O bound process)
-> I/O burst
CPU 집중 프로세스 (CPU bound process)
-> CPU burst
Unix
계열 -> ps -el
명령 : 프로세스 우선순위 확인 / nice
명령 : 프로세스 우선순위 변경.
스케쥴링 큐(Scheduling queue)
를 통해 우선순위에 따라 각 프로세스를 관리.준비 큐(ready queue)
, 대기 큐(waiting queue)
, ...호위 효과(convoy effect)
)호위 효과
를 방지하기 위해 작업 시간이 빠른 프로세스들부터 우선적으로 실행비선점형 스케쥴링
-> 선점형
으로 구현한 것이 최소 잔여 시간 우선 스케쥴링
선점형 스케쥴링
FCFS
+ Time slice
Time slice
: 각 프로세스가 CPU를 사용할 수 있는 시간SJF
+ Round-robin
.우선순위
부여 후 가장 높은 우선순위의 프로세스부터 실행SJF
, SRT
도 포함 가능기아(Starvation)
현상 : 우선순위가 낮은 프로세스의 실행이 계속 뒤로 연기되어 실행되지 않는 현상에이징(Aging)
: 오랫동안 대기한 프로세스 우선순위를 점차 높여 기아
방지다단계 큐 스케쥴링
에서 프로세스들은 다른 큐로 이동할 수 없음 -> 기아 현상
여전히 발생 가능준비 상태
프로세스는 가장 높은 우선순위 큐에 삽입 후 일정 시간(타임 슬라이스
)동안 실행타임 슬라이스
동안 실행CPU 집중 프로세스
들의 우선순위는 점차 낮아짐 / IO 집중 프로세스
들은높은 우선순위에서 실행 종료 1. 생성 상태
2. 준비 상태
3. 실행 상태
4. 종료 상태
5. 대기 상태
A, B, C, D
순으로 차례대로 처리된다.