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개의 댓글
댓글 작성
관련 채용 정보