● 프로세스의 정의
-실행(executing, running) 중인 프로그램
-PCB(process control block)를 지닌 프로그램
-프로그램 카운터(program counter)를 지닌 프로그램
● 프로세스의 특징
-프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.
-기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다.
-각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
-한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. ex) 파이프, 파일, 소켓 등을 이용한 통신 방법 이용
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
● 프로세스 관리
-사용자 프로세스와 시스템 프로세스의 생성과 삭제
-프로세스의 일시 중지와 재수행
-프로세스 스케줄링
-프로세스의 동기화
-프로세스 간 통신
-교착상태 처리
● 프로세스의 저장 영역
1. 코드(code) 영역
-프로그램의 코드 자체가 바이너리 코드로 저장되는 공간
2. 데이터 영역
-프로그램의 전역 변수나 정적 변수의 할당을 위한 공간
3. 스택(stack) 영역
-지역 변수(local variable) 할당과 함수 호출 시 전달되는 인수(argument) 값의 저장공간
4. 힙 영역
-동적 할당을 위한 저장공간
● 프로세스의 상태
1. 실행 상태(running)
-프로세스가 중앙처리장치를 차지하고 있는 상태
2. 준비 완료 상태(ready)
-중앙처리장치가 사용 가능하게 될 때 그것을 할당 받을 수 있는 상태
3. 대기 상태(block)
-프로세스가 입출력 처리 등을 하게 되면 중앙처리장치를 양도하고 입출력 처리가 완료될 때까지 대기해야 한다.
\
● 프로세스 제어 블록 (PCB : Process Controll Block)
프로세스 제어 블록이란 운영 체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스당 유지하는 정보들을 담는 커널 내의 자료구조를 말합니다. PCB는 다음과 같은 요소들로 구성됩니다.
- 프로세스의 상태 : 프로세스에게 CPU를 할당해도 되는 상태인가?
- 프로그램 카운터 값 : CPU가 다음에 수행해야할 명령어의 주소는 어디인가?
- CPU 레지스터 : CPU 연산을 위해 현 재 레지스터에 어떤값이 저장되어 있는가?
- CPU 스케쥴링 정보 : 어떤 프로세스에게 CPU를 할당할 것인가?
- 메모리 관리 정보 : 메모리 할당을 위해 필요한 정보는 무엇인가?
- 자원 사용 정보
- 입출력 상태 정보
1. 정의
-프로세스에 관한 모든 정보를 가지고 있는 데이터베이스
2. PCB 내용
-프로세스의 현재 상태(실행, 준비완료, 대기 등)
-프로세스의 고유 이름
-프로세스의 우선순위
-프로세스가 적재된 기억장치의 주소를 가지는 포인터
-할당된 자원장치 등을 가리키는 포인터
-중앙처리장치의 각종 레지스터 상태를 저장하기 위한 공간
★ 모든 프로세스는 각기 고유의 PCB 지님
https://real-dongsoo7.tistory.com/94
● 프로세스 생성
-유닉스 환경에서 프로세스를 생성시키는 것은 fork() 명령어
'Programming > OS_운영체제' 카테고리의 다른 글
파일시스템의 구조_i-node, 슈퍼블록 (0) | 2023.05.11 |
---|---|
유닉스(unix) 서버 보안_셸(Shell)과 커널(Kernel) (0) | 2023.05.04 |
CLI와 GUI의 차이점은? (2) | 2023.04.27 |
운영체제 개요(역할과 기능) (0) | 2023.03.24 |
운영체제의 종류(DOS, WINDOWS, UNIX, LINUX) (2) | 2023.03.20 |