본 글은 다음 강의를 들으며 정리한 내용입니다.
강의 정보 : 운영체제 / 이화여대 반효경
강의 링크
Process is a program in execution
CPU 수행 상태를 나타내는 하드웨어 문맥
프로세스의 주소 공간
프로세스 관련 커널 자료 구조
프로세스는 상태(state)가 변경되며 수행된다.
Running
Ready
Blocked (wait, sleep)
New
Terminated
프로세스 상태도
운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
다음의 구성 요소를 가진다 (구조체로 유지)
(1) OS가 관리상 사용하는 정보
(2) CPU 수행 관련 하드웨어 값
(3) 메모리 관련
(4) 파일 관련
CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
CPU가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행
CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장
CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴
System call이나 Interrupt 발생 시 반드시 context switch가 일어나는 것은 아님
(1)의 경우에도 CPU 수행 정보 등 context의 일부를 PCB에 save해야 하지만 문맥교환을 하는 (2)의 경우 그 부담이 훨씬 큼 (ex. cache memory flush)
Job queue
Ready queue
Device queues
프로세스들은 각 큐들을 오가며 수행된다.
Long-term scheduler (장기 스케줄러 / job scheduler)
Short-term scheduler (단기 스케줄러 / CPU scheduler)
Medium-Term Scheduler (중기 스케줄러 / Swapper)
프로세스 상태 (suspended 포함)
Running
Ready
Blocked (wait, sleep)
Suspended (stopped) (중기 스케줄러에 의함)
Blocked와 Suspended 차이점
Blocked : 자신이 요청한 event가 만족되면 Ready
Suspended : 외부에서 resume해 주어야 Active
프로세스 상태도 (suspended 포함)
A thread (or lightweight process) is a basic unit of CPU utilization
program counter
register set
stack space
code section
data section
OS resources
전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다.
다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked (waiting) 상태인 동안에도 동일한 테스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.
동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다.
스레드를 사용하면 병렬성을 높일 수 있다. (CPU가 여러개 달린 컴퓨터에서만 가능)
Responsiveness (응답성)
Resource Sharing (자원 공유)
Economy (경제성)
Utilization of MP(multi-processor) Architectures (CPU가 여러 개 있을 때 얻을 수 있는 장점)
Some are supported by kernel ➔ Kernel Threads (운영체제 커널이 여러 개의 스레드가 존재한다는 사실을 알고 있음)
Others are supported by library ➔ User Threads (프로세스 안에 여러 개의 스레드가 존재한다는 사실을 운영체제가 모름)
Some are real-time threads