Helicobacdo Project
로그인
Helicobacdo Project
로그인
03. 프로세스의 이해
헬리코박도
·
2021년 10월 15일
팔로우
0
운영체제
인프런
0
운영체제
목록 보기
4/10
공룡책 ch03 Process -1-
프로세스 Process
정의
실행 중인 프로그램
os에서 작업의 단위
CPU time, memory, files, I/O device 등의 자원을 필요로 함
섹션 Sections
여러 구역으로 나누어진 프로세스의 메모리 레이아웃
Text section
: 실행 가능한 코드가 저장되는 섹션
Data section
: 전역 변수가 저장되는 섹션
Heap section
: 프로그램이 실행되는 동안 동적으로 할당할 수 있는 공간
Stack section
: 함수를 호출할 때 사용되는 섹션, 함수의 패러미터, 반환 주소나 지역 변수가 저장됨
상태 state
프로세스는 실행되면서 상태를 변화한다.
New
: 프로세스가 생성되었을 때의 상태
Running
: 프로세스가 CPU를 점유하여 명령어들이 실행될 때의 상태
Waiting
: 다른 프로세스가 CPU를 점유하여 차례를 기다리며 대기할 때의 상태
Ready
: waiting에서 running으로 넘어가기 전에 대기하는 상태, waiting에서 바로 CPU를 점유하지 못함
Terminated
: 프로세스가 실행을 마친 상태
PCB Process Control Block
TCB Task Control Block라고도 함(주로 리눅스에서)
프로세스가 가져야 할 정보를 저장하는 구조체
PCB가 가지는 정보들
프로세스의 상태
프로그램 카운터
: 메모리에서 IR로 명령어를 가져올 때 필요한 주소를 저장
CPU 레지스터들
CPU 스케쥴링 정보
메모리 관리 정보
어카운팅 정보
I/O 스테이터스 정보
쓰레드 Thread
프로세스를 쪼개어 낸 단위
한 번에 한 태스크 밖에 처리하지 못함
멀티스레딩 Multithreading
: 여러 개의 스레드를 실행하여 여러 개의 태스크를 동시에 수행할 수 있게 함
여러 개의 작업을 수행하는 것이 사실상 OS의 개발 목적
멀티 프로그래밍의 목적
동시에 여러 개의 프로세스를 실행
그에 따른 CPU 효용 증가
타임 쉐어링의 목적
Time sharing
: CPU의 처리 속도가 매우 빠르므로 시간에 따라 하는 일을 변경하여 사용자 입장에서 동시에 여러 작업을 수행하는 것처럼 보이게 함
스케쥴링 큐 Scheduling Queues
Queue의 FIFO 특성 이용
ready queue
: 프로세스가 CPU를 점유하기 전에 대기하는 대기열
wait queue
: I/O 작업등의 이벤트가 있을 때 대기하는 큐, ready queue로 감
PCB를 원소로 갖는 연결 리스트로 구현함
문맥 교환 Context Switch
context
: PCB에 저장된 프로세스의 사용되고 있는 상태
Context Switch
CPU 코어를 다른 프로세스에게 넘겨줌
현재 프로세스의 상태를 저장
다시 상태를 복원
ex) 인터럽트가 발생 시
running process의 context를 저장
이후 다시 running될 때 저장된 context를 복원해옴
프로세스의 생성
프로세스는 프로세스를 만들 수 있음
parent process
: 생성 작업을 한 프로세스
child process
: 생성된 프로세스
fork()
시스템 콜을 통해 부모 프로세스가 자식 프로세스 생성할 수 있음
부모-자식 두가지 실행 선택지
부모 프로세스가 자식 프로세스와 동시에 실행
부모 프로세스는 wait로 들어가고 자식 프로세스가 종료되면 run
부모-자식 주소 공간
자식 프로세스가 부모 프로세스의 주소 공간을 복사
자식 프로세스가 부모와는 다른 새 프로그램으로 주소 공간 복사 X
프로세스의 종료
코드가 모두 끝났을 때(return)
exit()
시스템 콜을 사용해 강제로 종료
프로세스가 종료되면 os가 프로세스에 할당 되었던 것들을 모두 해제하고 회수함
좀비 프로세스와 고아 프로세스
zombie process
: 자식 프로세스가 종료되었으나 부모 프로세스가 wait()를 호출하지 않아 자식이 좀비가 됨
orphan process
: 부모 프로세스가 wait()를 호출하지 않고 부모 프로세스가 종료된 자식 프로세스
헬리코박도
Data Engineer
팔로우
이전 포스트
02. 운영체제의 개념과 구조
다음 포스트
04. 프로세스의 생성
0개의 댓글
댓글 작성