개발자 면접 공부/운영체제,CS

프로세스(PROCESS),스레드(THEREAD)

chogyujin 2020. 1. 11. 21:11
728x90

프로세스란?

1.운영체제로 부터 자원을 할당받는 행위

2.동적인 개념으로 실행된 프로그램을 의미

 

쓰레드

1.프로세스내에서 실행되는 여러 흐름의 단위

2.프로세스의 특정한 수행 경로

 


프로세스의 구조

프로세스 안에도 독자적인 구조로 나눠져있습니다.

1. Code 영역

코드 영역으로 기계어로 제어되는 메모리 영역입니다.

 

2. Data 영역

주로 전역변수가 저장되고, Static 변수도 저장되는 영역입니다.

 

3. Stack 영역

지역 변수가 저장되며 함수의 매개변수 ( 함수 호출시 전달되는 인자값) 들이 저장되는 영역입니다.

 

4. Heap 영역

동적할당을 위해 사용되는 공간입니다.


프로세스 제어 블록(PCB)

1. 프로세스는 생성될떄마다 PCB를 생성한다.

2.이전의 작업을 수행하고 싶으면 PCB에 저장된 내용을 가지고와 이전에 종료되었던 시점부터 다시 작업을 수행

 

PCB의 구조

1. POINTER

부모 프로세스의 주소를 기억하는 부모프로세스에 대한 포인터 , 자식 프로세스의 주소를 기억하는 자식 프로세스에 대한 포인터, 현재 프로세스가 위치한 주소를 기억하는 프로세스가 위치한 메모리에 관한 포인터, 프로세스에 할당된 자원에 대한 주소를 기억하는 할당된 자원에 대한 포인터가 존재한다.

 

2. PROCESS STATE

프로세스의 현재 상태가 준비 단계, 대기단계, 실행단계인지에 대한 상태 정보를 가지고 있다.

 

3. PROCESS NUMBER

프로세스를 구별할 수 있는 고유 번호

 

4. PROGRAM COUNTER

프로세스 실행을 위해 다음 명령의 주소를 표시

cpu는 기계어를 한 단위씩 읽어 처리하기 때문에 다음 실행할 기계어의 명령어의 주소를 가르키는 정보

 

5. REGISTER

레지스터에 관련된 정보, 프로그램 카운터에 대한 정보

 

6. SCHEDULING

스케줄링 정보 및 프로세스가 실행될 우선순위에 대한 정보

 

7. MEMORY 

페이지 테이블, 세그먼트 테이블에 관한 정보

 

8. ACCOUNTING INFORMATION

cpu 사용시간, 실제 사용 시간, 한정된 시간에 관한 정보

 

9. STATUS INFORMATION RELATED to I/O

입출력장치, 개방된 파일 목록에 관한 정보


스레드??

프로세스와 스레드

1.프로세스 내에서 각각 Stack만 따로 할당

2. Code,Data,Heep 영역은 공유

3.한 프로세스 내에 여러 실행

 

한마디로 쓰레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 쓰레드끼리 공유하면서 실행

크게 두개로 나뉨

 

1. 단일 스레드

하나의 프로세스에서 하나의 스레드가 존재 

하나의 레지스터와 스택으로 표현된다고 한다. 

 

2. 멀티 스레드

프로세스 내에는 다수의 스레드가 존재할 수 있다. 같은 프로세스 내에 존재하는 다수의 스레드는 운영체제 자원들을 공유하여 자원의 생성과 관리의 중복성을 최소화하여 수행능력을 향상 시킵니다. 이때 스레드들은 각각 독립적인 작업을 수행해야 하기 떄문에 각자의 독립적인 스택과스레드ID, 프로그램 카운터, 레지스터 집합을 가지고 있는 것이다.