공부 흔적남기기

프로세스와 스레드 본문

책 읽기/쉽게 배우는 운영체제

프로세스와 스레드

65살까지 코딩 2024. 1. 14. 18:11
728x90
반응형

프로세스의 개요

프로세스의 개념

프로그램이란 어떤 데이터를 사용하여 어떤 작업을 할지 그 절차를 적어 놓은 것이다.

반면 프로세스는 작성한 프로그램을 실행에 옮긴다는 의미이다.

 

프로그램을 실행하게되면 프로그램을 메모리의 적당한 위치로 가져온다. 그와 동시에 PCB를 생성한다. 

프로세스 실행을 세부적인 단계로 나눌 수 있다. 

생성단계: 프로그램을 실행하여 생성된 PCB와 함께 메모리로 올라간다.

준비단계: 메모리에서 자신의 실행단계를 기다린다.

실행단계: 프로세스가 CPU를 점유한 상태로 프로그램이 진행된다.

완료단계: 실행단계에서 프로세스가 다 끝난상태로 PCB가 제거되고 메모리에서 내려간다.

대기단계: 프로세스가 실행단계에서 입출력이 발생한 상태로 인터럽트가 발생하면 준비단계로 이동한다. 

휴식상태: 프로세스아 작업을 일시적으로 쉬고있는 상태이다.

보류상태: 프로세스가 메모리에서 잠시 쫓겨난 상태로 메모리가 꽉차거나 오류, 바이러스, 입출력 지연일 경우 보류상태로 이동된다.

보류와 휴식의 차이점은 보류는 스왑으로 쫓겨난 상태이고 휴식은 메모리에는 남아있으나 일시 중지한 상태이다.

 

PCB 제어블록

구성요소

포인터: 프로세스 제어 블록을 연결하여 대기 상태의 큐를 구현할 때 사용한다.

프로세스 상태: 위에서 정리한 상태들

프로세스 구분자: 프로세스를 구분하는 ID

프로그램 카운터: PC값

프로세스 우선순위

각종레지스터 정보

메모리 관리 정보

할당된 자원 정보

계정 정보

부모 프로세스구분자와 자식 프로세스 구분자

 

문맥교환

프로세스는 cpu에서 타임슬라이스 마다 변경된다.
이때 변경될떄 cpu 내부 값들을 새로운 process로 변경해줘야한다. 이를 context-swtiching이라고한다.

타임슬라이스가 작을 수록 컨텍스트 스위칭 비용이 증가하며 적절한 설정이 필요하다.

 

프로세스 연산

프로세스는 코드영역 데이터 영역 스택 영역으로 이루어져 있다.

fork 시스템 호출은 실행 중인 프로세스를 복사하는 함수이다. fork를 통해 프로세스를 복사해서 id에 관련된 정보와 데이터, 스택 영역을 바꾸면 된다. 

fork를 사용하면 프로세스 생성 속도가 빠르고

추가 작업 없이 자원을 상속할 수 있고

부모와 연결되어 시스템 관리를 효율적으로 할 수 있다.

 

exec를 통해 fork를 통해 생성된 복사 프로세스를 새로운 프로세스로 변경할 수 있다. 

exec를 사용하면 이미 만들어진 프로세스에서 값들만 변경하면 되기 때문에 편리하다.

 

프로세스와 스레드

간단히 적겠다. 이는 분명히 다시 공부할 필요가 있다.

멀티 코어 환경에서 프로세스는 타임슬라이스에 의해 실행 상태가되면

커널 스레도가 해당 프로세스의 스레드들을 분석하여 코어들에 배분하여 실행한다.

 

 

 

 

 

728x90
반응형

'책 읽기 > 쉽게 배우는 운영체제' 카테고리의 다른 글

프로세스 동기화  (0) 2024.01.26
CPU 스케줄링  (0) 2024.01.19
프로세스와 스레드에 대한 이해  (0) 2024.01.16
컴퓨터 구조와 성능 향상  (0) 2024.01.14
운영체제 개요  (0) 2024.01.03