반응형
프로세스 개념
CPU에 의해 처리되는 프로그램, 즉 실행 중인 프로그램
프로세스 상태
- 생성 : 사용자에 의해 프로세스가 생성된 상태
- 준비 : CPU를 할당받을 수 있는 상태
- 실행 : 프로세스가 CPU를 할당받아 동작 중인 상태
- 대기 : 프로세스 실행 중 입출력 처리 등으로 인해 CPU를 양도하고 입출력 처리 완료까지 대기 리스트에서 기다리는 상태
- 완료 : 프로세스가 CPU를 할당받아 주어진 시간 내에 완전히 수행을 종료한 상태
프로세스 상태 전이
- 디스패치 : (준비 -> 실행) 준비 리스트 중 실행될 프로세스를 선정하여 CPU를 할당
- 할당 시간 초과 : (실행 -> 준비) 실행 중인 프로세스의 지정 시간 초과 시 스케줄러에 의해 PCB 저장, CPU 반납 후 준비 상태로 전이
- 입출력 발생 : (실행 -> 대기) 실행 중인 프로세스의 지정 시간 초과 전 Block 발생 시 CPU를 스스로 반납하고 대기
- 깨움 : (대기 -> 준비) 입출력 종료 시 대기 상태의 프로세스에게 입출력 종료 사실을 알려주고 상태 전이
프로세스 구성
- 사용자 작성 코드
- 사용자 사용 데이터 : 사용자 작성 코드 프로그램에서 사용하는 데이터
- 스택 : 함수 호출 및 인자 값 전송에 사용
- 프로세스 제어 블록(PCB) : 운영체제가 프로세스 관리를 위해 필요한 자료를 담고 있는 자료 구조
- 프로세스 생성 시 만들어지고, 메인 메모리에 유지되며, 운영체제에서 한 프로세스의 전체 정의
- 구성요소 : PID, 프로세스 상태, 프로그램 카운트, 레지스터 저장 영역, 프로세스 스케줄링 정보, 계정 정보, 입출력 상태 정보, 메모리 관리 정보
스레드
프로세스에서 실행 제어만 분리한 실행 단위
커널 수준 스레드 | 사용자 수준 스레드 | |
---|---|---|
개념 | 스레드를 생성하고 스케줄링하는 주체가 커널 운영체제에 의해 스레드 운용 | 사용자 영역에서 라이브러리를 통해 구현 사용자 라이브러리를 사용하여 스레드 운용 |
장점 | 커널이 각 스레드를 개별적으로 관리 다른 스레드가 입출력 작업이 다 끝날 때까지 다른 스레드를 사용해 다른 작업 안정성 및 다양한 기능 제공 | 오버헤드가 적음. OS 스케줄러의 문맥 교환이 없음. |
단점 | 오버헤드가 많음. 사용자 스레드에 비해 생성 및 관리가 느림 | 어떤 스레드가 먼저 동작할지 알 수 없음. 여러 개의 사용자 스레드 중 하나의 스레드가 블록이 걸리는 경우 나머지 스레드도 블록 |
프로세스 vs 스레드
구분 | 프로세스 | 스레드 |
---|---|---|
요소 기술 | PCB, 텍스트, 데이터, 힙, 스택 | 스레드ID, 레지스터 집합, 스택 |
통신 방법 | IPC | IPC, 전역 변수 |
시스템 부하 | 문맥 교환을 통해 이루어지므로 시스템 부하가 큼 | 경량화된 문맥교환을 사용하여 시스템 부하가 적음 |
TODO
- PCB 구성요소
- IPC란?
- 문맥 교환이란?
반응형
'CS > OS' 카테고리의 다른 글
5. 교착상태(Deadlock) (0) | 2023.11.19 |
---|---|
4. 프로세스 스케줄링 (2) | 2023.11.18 |
2. 메모리 관리 (0) | 2023.11.08 |
1. 운영체제 (0) | 2023.11.07 |