-
4. ProcessCS/OS 2022. 4. 27. 20:49
Multi Tasking( Multi Processing )
운영체제(OS)를 통해 여러 프로세스(프로그램)를 실행하고 관리 ( UNIX / WINDOW )
즉, OS를 통해 CPU가 작업하는데 필요한 자원(시간)을 프로세스 또는 스레드간에 나누는 행위Multi User -> UNIX / NT SEVER
UNIX =C언어로 작성 / Kernel 구조 / 확장성
Process
프로그램이 실행 중이라는 것은 디스크에 저장되어 있던 프로그램을 메모리에 저장한 뒤 운영체제의 제어를 받을 수 있는 상태가 된 것을 의미
메인 메모리에 할당되어 실행중인 상태인 프로그램
프로세스는 job, task 등으로 불리기도 한다.메모리 구조
Stack , Heap , Data , Code로 구성
1. STACK
- 데이터를 일시적으로 저장하는 영역
- 지역 변수를 저장 및 호출한 함수의 반환 주소, 반환 값, 매개 변수 사용
2. HEAP
- 동적으로 메모리를 할당
3. Data
- 프로그램이 실행될 때 생성되고 종료되면 시스템에 반환
- 전역 변수나 정적 변수를 저장하거나 할당
- Data : 초기화 된 데이터
- Bss : 초기화되지 않은 데이터
4. Code
- 프로그램의 코드 자체를 저장하는 영역
- 기계어로 제어되는 메모리 영역
- 읽기 전용이기 때문에 프로그램이 쓰기를 시도하면 오류가 발생
프로세스의 종류
1. 커널 프로세스
모든 시스템 Resource(메모리, CPU .. ) 의 명령에 액세스할 수 있는 프로세스
2. 사용자 프로세스
사용자 코드를 수행하는 프로세스
프로세스 State 단계 변화
Dispatch ( Ready -> Running )
Ready Queue에 있는 프로세스 중 하나를 선택하여 CPU(Processor)에 할당
Timeout ( Running -> Ready )
하나의 프로세스가 오랜 기간동안 동작하는 것을 방지하고자, 할당된 시간 만큼만 점유하도록 한다.
Timer는 Interrupt를 발생시켜 다음 프로세스를 동작하도록 만든다.Block ( Running -> blocked )
프로세스를 실행하다가 입출력 명령(Hardware Interrupt) or 이벤트(System Call)가 발생하면 프로세서를 스스로 반납하고 Wait State로 변경
WakeUp ( Blocked -> Ready )
Ready state -> return Interrupt/ System call(User mode) -> State = Wait -> Ready
PCB ( Process Control Block ) = TCB ( Task Control Block )
특정한 프로세스를 관리할 필요가 있는 정보를 포함하는, 운영체제 커널의 Process Management 내 자료구조
PCB는 운영 체제가 프로세스를 표현한 것
운영체제가 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 가지고 있는 데이터베이스를 PCB
운영체제에서 프로세스는 PCB로 나타내어지며, PCB는 프로세스에 대한 중요한 정보를 가지고 있는 자료
각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거됩니다.1) 프로세스 식별자(Process ID)
2) 프로세스 상태(Process State) : 생성(New), 준비(Ready), 실행 (Running), 대기(Waiting), 완료(Terminated) 상태가 있습니다.
3) 프로그램 계수기(Program Counter) : 프로그램 계수기는 이 프로세스가 다음에 실행할 명령어의 주소를 가리킵니다.
4) CPU 레지스터 및 일반 레지스터
5) CPU 스케줄링 정보 : 우선 순위, 최종 실행시각, CPU 점유시간 등
6) 메모리 관리 정보 : 해당 프로세스의 주소 공간 등
7) 프로세스 계정 정보 : 페이지 테이블, 스케줄링 큐 포인터, 소유자, 부모 등
8) 입출력 상태 정보 : 프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등
9) 포인터 : 부모프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스가 위치한 메모리 주소에 대한 포인터, 할당된 자원에 대한 포인터 정보 등.
Process Queue
Job Queue(Long-term scheduler): 하드디스크에 있는 프로그램이 실행되기 위해 메인 메모리의 할당 순서를 기다리는 큐이다.
Ready Queue(Short-term scheduler): CPU 점유 순서를 기다리는 큐이다.
Device Queue: I/O를 하기 위한 여러 장치가 있는데, 각 장치를 기다리는 큐가 각각 존재한다.
Context Switching
하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업
스케줄러(Short-term Scheuler) 에 의해 발생'CS > OS' 카테고리의 다른 글
XV6 - 이론 정리_1 (0) 2022.05.13 3. Dual Mode / System Call / OS Service (0) 2022.05.11 2.OS 역사 (0) 2022.05.06 1. 운영체제(OS)란? (0) 2022.05.06 6. Thread (0) 2022.04.27