-
[운영체제] 3. Process Concept 프로세스 개념Computer Science/OS 2022. 9. 23. 02:54728x90
목적
프로세스 개념 소개
프로세스 스케줄링, 생성, 종료, 통신
클라이언트와 서버 간의 통신
프로세스 개념 (Process Concept)
OS는 다양한 종류 프로그램 실행.
- 배치 시스템(batch system) - jobs(process)
- 시분할 시스템(Time-shared system) - tasks
프로세스(Process)란?
- 실행 중인 프로그램
- 운영체제의 작업 단위
- 프로세스는 다음과 같은 메모리 공간 할당
- text section - 실행가능한 프로그램 코드가 저장되는 공간
- Data section - 전역변수가 저장되는 공간
- Heap - 동적으로 할당되는 객체(변수) 저장되는 공간
- 프로그램 카운터 (Program counter) - 다음번 주소 값 저장되는 PC를 프로세스를 가짐
- 스택 (Stack) - 함수가 실행되는 동안 지역변수가 저장되는 임시 공간, 대표적으로 함수 매개변수, 리턴 주소, 지역 변수 등이 포함됨
- 프로그램은 수동적(단순 디스크에 저장된 실행 가능한 파일)이다.
- 프로세스는 프로그램을 디스크에서 가져와 메인 메모리에 적재하고 CPU는 메모리에서 프로그램을 인출(fetch)하여 실행한다.
- 즉, 프로세스는 메모리에 적재된 프로그램이다.
프로세스가 메모리에 적재될 때(Process in Memory)
프로세스 상태 (Process State)
프로세스는 프로그램 실행하면서 상태가 변함
- New : 프로세스가 생성된 상태 (메모리 공간에 할당되는 순간)
- Running : 프로세스가 수행되는 상태 (실행중인 상태)
- Waiting : 프로세스 이벤트가 발생되어 입/출력 완료를 기다리는 상태 (대기상태)
- Ready : 프로세스가 프로세서에 의해 실행되기를 기다리는 상태(언제라도 실행 가능)
- Terminated : 프로세스 실행 종료 상태
sheduler dispatch : Ready 상태의 여러 프로세스 중 하나를 골라 OS가 CPU에 할당하여 실행하는 것
프로세스 제어 블록 (Process Control Block, PCB)
운영체제에서 각각의 프로세스는 PCB로 표현된다. 즉, PCB는 프로세스에 관한 정보(상태)를 저장한 블록
-> 운영체제가 유지, 관리
- 프로세스 상태(Process State) : new, ready, running, waiting, terminated 상태 중 하나에 해당됨
- 프로그램 카운터(Program Counter) : 메모리의 다음 명령어 주소를 저장함
- CPU 레지스터(CPU registers) : IR(Instruction Register), DR(Data Register), PC(Program Counter)와 같은 저장공간이 포함됨
- CPU 스케줄링 정보(CPU-scheduling information) : 프로세스 실행 순서를 정하는 정보
- 메모리 관리 정보(Memory-management information)
- 자원 사용량 정보(Accounting Information) : 프로세스의 실행, 시간제한, 실행 ID 등에 사용되는 CPU양의 정보
- 입/출력 상태 정보(I/O status information)
=> 모든 프로세스의 상태들이 Process Control Block (PCB)에 저장된다.
CPU Switch From Process to Process
CPU는 한 프로세스만 실행 X.
P0 실행하다가, 이벤트(인터럽트) 발생 시 제어권 OS가 가짐. -> 인터럽트 처리(프로세스 상태 PCB에 저장)
-> 다음번 프로세스 실행.
기존에 저장된 PCB1을 통해 현재 PC와 CPU 레지스터에 재적재 하여 프로세스 P1실행.
-> 다시 P1 실행 종료 후, PCB1에 P1 상태 저장 -> PCB0으로부터 P0 다시 실행.
** CPU가 다른 프로세스로 이동하여 실행 -> context switch : 문맥교환
문맥 교환 (Context Switch)
기존 프로세스 상태를 저장하고, 새롭게 실행하는 프로세스의 상태를 적재.
(CPU가 일하다가 다른 프로세스로 전환하는 것)
- CPU Core를 다른 프로세스에게 양도하는 것
- 현재 프로세스의 상태를 저장함
- Context Switch 하게 되면 다른 Process Context를 복원함
문맥 (Context) : 프로세스의 상태, 프로세스를 실행할 때 필요한 모든 정보. 즉, 마지막에 수행했던 명령어 위치.
Context는 PCB에 저장된다.
Context-Switch time : 생산적인 일을 하는 것은 아님. 단순 thread, 프로세스를 전환하는 일. 따라서 오버헤드 (overhead)이므로, 문맥 교환 (Context Switch)은 일찍 끝내는 것이 좋다. 문맥교환 시간은 HW 사양에 의존적이다.
프로세스 스케줄링 큐 (Process Scheduling Queues)
프로세스 관리 위해서 OS는 다양한 종류의 큐를 관리한다.
- Job queue : 시스템에 있는 모든 프로세스를 저장
- Ready queue : 실행 준비가 된 프로세스를 저장 (CPU를 기다리는 큐)
- Device queues : 각종 IO장치를 기다리는 큐
프로세스는 다양한 종류의 큐를 왔다 갔다 하면서 실행된다.
스레드 (Treads)
요즘 프로세스는 멀티 스레드로 구성, 각 스레드마다 PC(program counter)를 가진다.
PCB에도 여러 프로그램 카운터를 저장할 공간이 있다. -> 한 프로세스에 속한 여러 스레드의 정보를 저장.
Representation of Process Scheduling
스케줄러 (Schedulers)
Long-term scheduler (job scheduler)
- 어떤 작업을 실행시킬지 디스크에서 선택
- 비교적 느려도 괜찮다.
- 멀티 프로그램의 정도를 제어한다.
Short-term scheduler (CPU scheduler)
- 메모리에 할당된 프로세스, 여러 ready queue의 작업 중 우선순위를 고려하여 CPU를 할당.
- CPU스케줄러는 결정사항 처리가 매우 빨라야 한다. (자주 불려짐)
프로세스의 특성
- I/O-bound process
- 입출력을 많이 하는 프로세스
- 우선순위가 높다. (I/O 우선)
- CPU-bound process
- 우선순위 낮음
Medium Term Scheduling
Ready queue에 너무 많은 프로세스 존재할 때 (메모리 부족)
-> Ready queue 작업을 디스크로 돌려보냄. (Swap out)
-> 추후 다시 해당 작업을 메인 메모리로 재 할당 (Swap in)
이러한 스케줄링 과정을 Medium Term Scheduler가 처리.
* Medium Term Scheduler(MTS)는 멀티 프로그램의 정도를 제어해준다.
프로세스 생성 (Process Creation)
OS는 프로세스를 생성하는 시스템 콜 (System call)을 제공. 부모 프로세스가 자식 프로세스를 만들 수 있음. (트리구조)
일반적으로 프로세스는 관리된다. 각 프로세스 Process identifier (PID) 정보로 구분
프로세스 생성 시스템 콜 (UNIX)
- fork() : 자식 프로세스가 부모 프로세스 그대로 복사해서 실행 (동일한 프로그램 복사)
- exec() : 자식 프로세스가 새로운 프로그램을 적재하여 실행
Solaris 운영체제의 프로세스 트리구조 프로세스 간 통신 (Interprocess Communication, IPC)
프로세스는 여러 프로세스가 독립적(Independent) 또는 협동(Cooperationg)하여 수행할 수 있다.
협동 프로세스간 서로 영향을 주거나 받음. (상호 통신 필요.)
협동 프로세스의 협동 이유
- 정보공유
- 속도 향상 (계산속도)
- 모듈화 프로그래밍으로 프로그래밍 용이
- 편리함
협동 프로세스간 통신이 필요 (interprocess communication, IPC)
방법
- 공유 메모리(Shared memory) - 편리, 속도 빠름
- 메시지 패싱(Message passing) - OS(kernel)을 거치기 때문에 느리다
Interprocess Communication - Shared Memory
- 처음 공유 메모리 설정 시 OS 도움 없이 사용자 프로세스 간 정보 교환 가능.
- 공유 변수에 접근할 때, 프로세스간 동기화 메커니즘 필요.
- 공유 변수에 대한 배타적 접근이 허용되어야 한다. (특히, 공유 변수 업데이트될 경우)
생산자-소비자 (Producer-Consumer Problem)
생산자, 소비자 프로세스 간 통신 : 공유 메모리 사용 (변수를 공유)
unbounded-buffer : 공유 저장 공간이 무한 (비현실적)
bounded-buffer : 공유 저장 공간이 제한적
Interprocess Communication - Message Passing
메시지 패싱 사용 시, 프로세스 간 동기화, 작업의 선후관계를 명시
- 공유 변수 없이 프로세스 통신 가능.
- send(message) : 메시지 길이는 고정 또는 가변
- receive(message)
- 두 프로세스 P, Q 간 통신하려면, 먼저 연결이 확립되어야 한다. (통신 링크 확보)
- 명령어를 통한 메시지 교환
직접 통신 - 통신 상대방을 명확하게 밝힘
- send(P, message) - 명시적으로 전송/수신할 프로세스 명시
- receive(Q, message)
간접 통신 - 메일박스를 통한 메시지 송수신
- 메일박스는 유일한 ID 있음
- 프로세스 간 메일박스 공유하면서 통신 가능
- send(A, message)
- receive(A, message)
<중요 용어 정리>
1. ____ - a program in execution that forms the basis of all computation.
___ - 모든 계산의 기초를 이루는 실행 중인 프로그램.
=> 프로세스 (process)
2. A process inclouds the process ____ which contains temporary data such as function parameters, return addresses, and local variables. A process includeds a ___ section, which contains global variable.
함수 매개 변수, 반환 주소 및 로컬 변수와 같은 임시 데이터를 포함하는 프로세스 ___를 포함하는 프로세스에 흐릅니다. 프로세스에는 전역 변수가 포함된 __ 섹션이 포함됩니다.
=> 스택 (Stack)
3. A process is more than the program code, which is sometimes known as the ___ section.
프로세스는 프로그램 코드 이상이며, __ 섹션이라고도 합니다.
=> text / (text section)
4. A process may also include a ___, which is memory that is dynamic data allocated during process run time.
프로세스에는 프로세스 실행 시간 동안 할당된 동적 데이터인 __가 포함될 수도 있습니다.
=> 힙 (heap)
5. a process state ___ : instructions are being executed.
프로세스 상태 __: 명령이 실행 중입니다.
=> running
6. a process state ___ : the process is waiting for some event to occur. (for ex, IO completion)
프로세스 상태 __ : 프로세스가 일부 이벤트가 발생하기를 기다리고 있습니다. (예: IO 완료)
=> waiting
7. a process state ___ : the process is waiting to be assigned to a CPU.
프로세스 상태 __: 프로세스가 CPU에 할당되기를 기다리고 있습니다.
=> ready
728x90반응형'Computer Science > OS' 카테고리의 다른 글
[운영체제] 6. Process Synchronization 프로세스 동기화 (2) 2022.11.11 [운영체제] 5. Process Scheduling 프로세스 스케줄링 (0) 2022.10.08 [운영체제] 4. Multithreaded Programming 멀티 스레드 프로그래밍 (0) 2022.09.28 [운영체제] 2. OperatingSystem Structures 운영체제 구조 (0) 2022.09.22 [운영체제]1.introduction 운영체제 소개 (2) 2022.09.08