과목명 : 운영체제(Operating System)
수업일자 : 2023년 04월 12일 (수)
1. Process
1-1. 프로세스(Process)
(1) 물리 저장소에 저장된 프로그램이 Loader에 의해 메모리에 로드되어 실행되는 상태에 있을 때 Process라고 할 수 있습니다.
(2) 프로그램이 실행되기 위해서는 시스템으로부터 필요한 리소스를 할당받아야 합니다.
- 메모리 공간(Memory space)
- 운영체제는 프로세스의 관리를 위해 필요한 자료구조(Data Structure)를 생성해야 합니다.
1-2. 프로세스가 가지는 특징
(1) 시스템 리소스가 할당된 단위입니다.
- 물리 저장소(디스크)에 저장된 코드와 데이터를 메모리에 로드하고 또한 실행에 필요한 추가적인 메모리 공간을 할당합니다.
- 해당 프로세스가 접근하고자 하는 파일과 I/O 장치들에 대한 할당
(2) Dispatching의 단위
- 하나의 프로그램이 운영체제로부터 CPU의 자원을 일정 기간 동안 할당받아 Instruction을 실행하는 것을 의미합니다.
1-3. 하나의 프로세스는 하나의 Dispatching 단위
(1) 최근 운영체제의 경우 하나의 프로세스에서 여러 개의 dispatching 단위가 실행될 수 있도록 하고 있습니다.
(2) 이러한 dispatching의 단위를 스레드(Thread)라고 부릅니다.
(3) 이러한 스레드는 프로세스 내부에서의 실행 흐름의 단위이고 하나의 프로세스는 여러 개의 스레드를 가질 수 있습니다.
2. Information for Process
2-1. 프로세스를 description하기 위한 정보
(1) 프로세스의 상태 정보
- 프로세스가 CPU를 사용하여 동작 중(Running)인지 특정 이벤트를 기다리고 있는 상태(Block)인지 또는 Scheduling을 위해 ready queue에 대기하고 있는 상태인지 등을 표현할 수 있는 정보를 의미합니다.
(2) CPU Registers
- Context 정보이며 현재 실행하려고 하는 Instruction 및 관련 데이터입니다.
(3) 메모리 관리를 위한 정보
- PDT(Page Directory Table)
(4) Process가 사용하는 I/O에 관한 정보
2-2. 운영체제는 프로세스 관리를 위해 필요한 자료구조를 생성합니다.
- kd> dt nt!_EPROCESS
3. Process in Virtual memory
3-1. 프로그램은 코드와 데이터로 구성된다.
3-2. 실행 중인 프로그램인 프로세스는 text, data 및 heap과 stack으로 구성된다.
(1) Heap은 코드에서 동적으로 필요한 메모리 공간을 할당하기 위한 메모리의 영역입니다.
(2) Stack은 지역 변수 및 함수 호출을 위해 필요한 메모리 영역입니다
3-3. 3개의 Thread로 구성된 프로세스
(1) 스레드는 자신만의 stack 공간을 보유하고 있습니다.
4. Process address space
4-1. 프로세스는 text, data, heap, stack으로 구성되고 페이지(Page) 단위로 가상 공간에 할당된다.
(1) 이렇게 page 단위로 할당된 영역들은 MMU(Memory Management Unit)에 의해 물리 메모리 영역에 page 단위로 할당됩니다.
(2) 가상 공간의 경우 page 단위가 연속적인 형태를 가지고 있으나 물리 공간에서는 page가 연속적인 형태를 가지고 있지 않을 수도 있습니다. (실제 가상 공간에서는 비어있는 공간에 나누어 할당)
5. Data Structures for Process in Windows OS(Operating System)
5-1. EPROCESS
(1) Windows 운영체제의 경우 프로세스가 생성되면 EPROCESS 자료구조를 할당합니다.
(2) WinDbg를 통해 확인한다면, kd> dt nt!_EPROCESS 커맨드로 확인할 수 있습니다.
(3) EPROCESS 구조체에 프로세스에 대한 아래와 같은 정보가 들어 있습니다.
- 프로세스의 상태, 프로세스의 ID, Handle 정보 (...)
5-2. Lab
(1) 가상 머신 윈도우 환경에서 메모장(notepad.exe)을 실행시킵니다.
(2) kd> !process 0 0 notepad.exe
- !process 0 0 : 현재 실행 중인 프로세스
- notepad.exe 프로세스에 대한 정보를 확인합니다.
(3) kd> .process /i ffff8404c7edb080; g; .reload/user
(4) kd> dt nt!_EPROCESS
(5) kd> dt nt!_EPROCESS ffff8404c7edb080
6. Process states
6-1. As a process executes, it changes state
(1) New
- 프로세스가 생성된 상태입니다.
(2) Running
- 관련된 명령어들이 실행되고 있는 상태입니다.
(3) Waiting
- 프로세스가 어떤 이벤트가 발생하기를 기다리고 있는 상태입니다.
(4) Ready
- CPU에게 할당되기를 기다리고 있는 상태입니다.
(5) Terminated
- 프로세스의 실행이 종료된 상태입니다.
7. CPU switch from Process to Process
7-1. 컨텍스트 스위칭(Context Switching)
(1) 컨텍스트 스위칭은 여러 개의 프로세스가 실행되고 있을 때 기존에 실행되던 프로세스의 작업을 중단하고, 다른 프로세스를 실행하는 것을 말하고 CPU에서 실행할 프로세스를 교체하는 것을 의미합니다. 현재 컴퓨터의 많은 성능 향상으로 사용자들은 여러 개의 작업들이 동시에 실행되고 있는 것처럼 생각할 수 있으며 이를 통해 병렬적으로 실행되고 있다는 것을 알기 힘들 정도로 그 속도가 빠른 편입니다.
(2) Multitasking 기능의 구현은 시분할(Time division) 방식을 통해 이루어집니다.
- Process #0에 CPU를 할당하여 자신의 코드를 실행시킵니다.
- 할당된 CPU Time이 모두 끝나거나 I/O request로 큐(Queue)에 대기하게 되면 CPU를 다른 프로세스에게 넘겨주게 됩니다.(Interrupt에 의해 진행)
- CPU를 사용하고 있던 프로세스의 정보는 반드시 저장되어야 합니다.
→ 운영체제가 각 프로세스에 대하여 관리하는 정보를 PCB(Process Control Block)이라고 합니다.
→ CPU 내부의 레지스터들
→ MMU(Memory Management Unit)에 대한 정보
→ (...)
(3) 이제 Process #1이 CPU를 소유하고 필요한 작업을 수행합니다. 할당된 CPU 시간(Time quantum)을 모두 사용한 후 CPU 소유를 해제합니다.
(4) Process #0이 다시 CPU를 소유하게 되고 저장된 PCB를 다시 로드하여 이전까지 수행되었던 작업에서부터 다시 이어서 작업을 수행합니다.
8. Scheduler and Process scheduling Queues
8-1. 프로세스는 상태에 따라 크게 Ready queue와 Device queue에 존재한다.
(1) Ready queue
- 스케줄러는 Ready queue에 대기하고 있던 프로세스 중 하나를 선택하고 CPU를 할당합니다.
- 메인 메모리에 존재하며 실행되기를 기다리고 있는 프로세스들이 적재되어 있습니다.
(2) Device queue
- I/O device의 서비스를 위해 대기하는 큐입니다.
8-2. Scheduler
(1) Long-term scheduler (or Task scheduler)
- Ready queue로 가져와야 하는 프로세스를 선택합니다.
(2) Short-term scheduler(or CPU scheduler)
- 다음에 실행할 프로세스를 선택하고 CPU를 할당합니다.
8-3. Scheduling policy(스케줄링 정책)
- Round robin scheduling, Priority based scheduling
(1) Round ronbin scheduling
- 멀티태스킹을 위한 시분할 시스템을 위해 설계된 선점형 스케줄링(Preemption scheduling) 기법 중 하나로써 프로세스들 사이에 우선순위를 두지 않고 순서적인 시간 단위로 CPU를 할당해 주는 방식의 스케줄링 알고리즘입니다.
(2) Priority based scheduling
- 각 프로세스에게 우선순위를 부여하고 해당 우선순위에 따라 스케줄링이 일어날 수 있도록 하는 스케줄링 알고리즘입니다. 이러한 우선순위 기반 스케줄링의 경우 우선순위가 높은 프로세스가 CPU를 거의 독점하게 되면서 다른 프로세스들에서 발생하는 *Starvation problem이 발생할 수 있습니다.
* Starvation problem : 컴퓨터 과학에서 Starvation problem의 경우 프로세스가 필요한 컴퓨터 리소스를 가져오지 못하는 상황을 의미
9. Why Thread?
9-1. A Web browser
(1) First thread
- 이미지나 텍스트를 표시합니다.
(2) Another thread
- 네트워크에서 또 다른 데이터를 검색합니다.
9-2. A word processor
(1) First thread
- 그래픽 요소들을 표시합니다.
(2) Second thread
- 사용자의 키 입력에 대한 응답을 준비합니다.
(3) Third thread
- 백그라운드 환경에서 Syntax적인 요소를 체크합니다.
9-3. 여러 가지 유사 작업 처리를 위해 단일 애플리케이션이 필요
(1) 웹 서버는 웹 페이지, 이미지, 사운드 등에 대한 클라이언트의 요청을 수락하고 처리합니다.
(2) 부하가 많은 웹 서버의 경우 동시에 엑세스하는 수많은 클라이언트를 처리합니다.
9-4. Parent-child process model
(1) Parent-child 프로세스 모델에서 서버가 요청을 받은 경우
→ 해당 요청을 처리하기 위한 별도의 프로세스 생성
(2) Parent-child 프로세스 모델에서 프로세스가 생성되는 것은 시간 소모, 자원 집약적입니다.
(3) 새로운 프로세스가 기존 프로세스와 동일한 작업을 수행하는 경우
→ 일반적으로 여러 스레드를 포함하는 하나의 프로세스를 사용하는 것이 더 효과적일까?
- 학부에서 수강했던 전공 수업 내용을 정리하는 포스팅입니다.
- 내용 중에서 오타 또는 잘못된 내용이 있을 시 지적해 주시기 바랍니다.
댓글