0. 프로세스와 스레드로 가는 길
1. Program
- 파일이 저장 장치(DISK)에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태
2. Process
자신만의 고유 공간과 자원을 할당받아 사용하는 작업의 단위
- 디스크에 있던 프로그램을 메모리에 적재하여 운영체제의 제어를 받게 된 상태
- Code, Data, Stack, Heap으로 구성되어 있는 독립된 메모리 영역
- 한 개의 프로세스당 최소 한 개의 메인 스레드를 갖고 있다.
- 한 프로세스는 다른 프로세스의 변수, 자료구조같은 메모리에 직접 접근이 불가능하다.
- 메모리에 접근하기 위해선 IPC(inter Process Communication)을 사용해야 한다.
3. Thread
프로세스 내에서 실행되는 흐름의 단위, 다른 스레드와 프로세스의 자원과 공간을 공유하면서 사용한다.
- 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
- 프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스 내의 주소공간이나, 자원들을 같은 프로세스내에 스레드끼리 공유하여 실행 가능하다.
- 프로세스 자원을 변경하면 다른 스레드로 즉시 확인이 가능하다.
- 스레드는 관련 자원과 함께 메모리를 공유할 수 있는데, 이 때문에 손상된 데이터나 스레드의 이상 동작을 고려해야 한다.
예상 질문
프로그램과 프로세스의 차이점이 무엇인가요?
프로그램은 저장장치(DISK)에 저장되어있지만 메모리에는 올라가있지(LOAD) 않은 정적인 상태를 의미합니다.
프로세스는 저장장치에 있던 프로그램을 메모리에 적재한 동적 개체입니다.
프로세스와 쓰레드의 차이점이 무엇인가요?
자신만의 고유 공간과 자원을 할당받아 사용하는 작업의 단위를 프로세스라고 하며,
스레드는 프로세스 내에서 실행되는 흐름의 단위, 다른 스레드와 프로세스의 자원과 공간을 공유하면서 사용한다.
프로세스가 어떻게 동시에 처리되는지 설명해주세요
동시에 처리되는 것 처럼 느껴지는 것일뿐, 실제로는 동시에 처리되지는 않습니다.
Context Switching을 통해서 CPU를 할당받는 프로세스가 계속해서 바뀌기 때문에 사용자가 봤을때 동시에 처리되는 것처럼 느낄 수 있습니다.
'CS > 운영체제' 카테고리의 다른 글
교착상태(Dead Lock)란???(feat.기아상태) (0) | 2022.01.17 |
---|---|
시스템 콜(System Call)이 뭐야? (0) | 2022.01.15 |
Context Switching(문맥교환)이란? (0) | 2022.01.13 |
동기화(Synchronous)와 세마포어(Semaphore)와 뮤텍스(Mutex) (0) | 2022.01.12 |
Multi Process & Multi Thread ??! (0) | 2022.01.11 |