반응형
운영체제 2탄 프로세스 영역입니다.
면접 부분에서 오히려 더 자주 나오는 파트이기도 한 것 같습니다.
프로세스란?
- 컴퓨터에서 실행되고 있는 프로그램들은 모두 프로세스
- 운영체제 프로세스와 사용자 프로세스로 분류
- 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받음
- 기본적으로 프로세스당 최소 1개의 스레드를 가지고 있음
- 각 프로세스는 별도의 주소 공간에서 실행, 한 프로세스는 다른 프로세스의 변수나 자료구조에 직접 접근 불가
- 다른 프로세스의 자원에 접근하려면 IPC(Inter-Process Communication)을 사용해야 함
(파이프, 파일, 소켓 등을 이용한 통신 방법)
프로세스 메모리 구조
- 코드 영역 : 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 함
CPU는 코드 영역에 저장된 명령어를 하나씩 처리 - 데이터 영역 : 메모리의 데이터 영역은 프로그램의 전역 변수와 정적변수가 저장되는 영역
프로그램 시작과 함꼐 할당되고, 종료되면 소멸 - 힙 영역 : 사용자가 직접 관리할 수 있고, 관리 해야만 하는 메모리 영역
사용자에 의해 동적으로 할당되고 해제됨
낮은 주소에서 높은 주소의 방향으로 할당 - 스택 영역 : 함수의 호출과 관련된 지역 변수와 매개변수가 저장
함수의 호출과 함께 할당, 함수 호출 완료 후 소멸
스택 영역에 저장되는 함수 호출 정보를 스택 프레임이라고 함
Thread란?
- CPU 사용의 기본 단위
- 프로세스 내에서 실행되는 여러 흐름의 단위
- Thread ID, PC, 레지스터 세트 및 스택으로 구성
- Thread는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유
- 한Thread가 프로세스 자원을 변경하면 다른 Thread도 그 결과가 반영됨
Thread vs Process
- 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위
- 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위
- 프로세스는 운영체제로부터 독립된 메모리, 주소 공간을 할당받음
- 스레드는 할당받은 자원들을 내부 스레드끼리 공유하며 실행
- 스레드는 일종의 경량화된 프로세스 개념
- 스레드간의 자원 공유는 전역 변수를 이용하므로, 동기화 문제에 주의 필요
멀티쓰레딩의 특징
- 하나의 프로세스를 다수의 스레드를 통해 실행하는 것
- 하나의 프로세스 내에 다수의 실행 단위가 존재하여, 작업의 수행에 필요한 자원을 공유하기 때문에 자원의 생성과 관리가 중복되는 것을 방지
- 교착 상태(DeadLock) 발생 가능, 동기화 주의 필요
- 프로세스 간의 통신 IPC보다 효율적으로 통신이 가능, Context Switch 속도 빠름(Stack만 처리하므로)
멀티프로세싱 VS 멀티프로그래밍
- 멀티프로세싱은 여러 개의 처리장치를 장착하여 동시에 여러 작업을 병렬로 실행하는 방법
- 멀티프로그래밍은 다수 개의 프로그램이 같이 주기억장치에 있도록 한 방식
프로세스의 상태
- 생성(New) : 프로세스가 막 생성된 상태
- 준비(Ready) : 프로세스가 CPU에 실행되기 위해 대기하는 상태
- 실행(Running) : 프로세스에 포함된 명령어가 CPU에서 실행되고 있는 상태
- 대기(Waiting) : 프로세스가 특정 자원이나 이벤트를 기다리고 있는 상태
- 종료(Terminated) : 프로세스가 실행을 완료한 상태
프로세스 상태 전이 동작
PCB(Process Control Block)
- PCB는 특정한 프로세스를 관리할 때 필요한 정보를 저장하는 운영체제 커널의 자료구조
- 프로세스가 생성될 때마다 고유의 PCB 생성
반응형
'IT > CS지식[면접대비]' 카테고리의 다른 글
[면접대비 CS지식] 운영체제 - 일반 (2) | 2020.12.21 |
---|