프로세스의 연산
목차
01. 운영체제의 개요
02. 컴퓨터의 구조와 성능 향상
03. 프로세스와 스레드
04. CPU 스케줄링
05. 프로세스 동기화
06. 교착 상태
07. 물리 메모리 관리
08. 가상 메모리의 기초
09. 가상 메모리 관리
10. 입출력 시스템과 저장장치
11. 파일 시스템
12. 네트워크와 분산 시스템
프로세스의 연산
프로세스의 구조
코드 영역, 데이터 영역, 스택 영역으로 구성되어있다.
코드 영역은 프로그램의 본문이 기술된 곳이다. 읽기 전용이다
데이터 영역은 코드가 실행되면서 사용하는 변수나 파일 등의 각종 데이터를 모아 놓은 곳이다.
이 곳의 내용은 대부분 읽기 쓰기가 가능하다.
스택 영역은 운영체제가 프로세스를 실행하기 위해 부수적으로 필요한 데이터를 모아 놓은 곳이다.
프로세스 내에서 함수를 호출하면 함수를 수행하고 원래 프로그램으로 되돌아올 위치를 이 영역에 저장한다.
프로세스의 생성과 복사
fork()
실행 중인 프로세스로부터 새로운 프로세스를 복사하는 함수이다. 프로세스를 복사하는 일종의 시스템 호출이다.
포크 시스템 호출을 하게 되면, 프로세스 제어 블록의 내용이 변경된다.
프로세스 구분자, 메모리 관련 정보, 부모 프로세스 구분자와 자식 프로세스 구분자가 바뀐다.
장점
프로세서의 생성 속도가 빠르다.
추가 작업 없이 자원을 상속 받을 수 있다.
시스템 관리에 효율적이다.
프로세스의 전환
exec()
프로세스는 그대로 둔 채 내용만 바꾸는 호출이다.
시스템 호출을 하게 되면 완전히 다른 프로세스로 전환된다.
시스템 호출을 사용하는 목적은 프로세스의 구조체를 재활용하기 위함이다.
exec() 시스템 호출은 코드 영역, 데이터 영역, 스택 영역을 초기화 시킨다. 부모의 구조체는 활용한다.
프로세의 계층 구조
유닉스의 프로세스 계층 구조
init프로세서는 전체 프로세서의 출발점이다.
init프로세스를 부모로 두고 다른 나머지 프로세스를 자식으로 둔다. 이렇게 되면 부포 프로세스가 자식 프로세스를 효율적으로 관리할 수 있기 때문에 이런 계층 구조를 이룬다.
fork() 시스템 호출로 복사하고 exec() 시스템 호출로 내용을 바꿔준다.
장점
여러 작업의 동시 처리, 용이한 자원 회수를 할 수 있다.
미아 프로세스
부모 프로세스가 종료 됬는데도, 비정상적으로 남아있는 프로세스를 미아 프로세스라고 한다.
exit(), return() 함수는 자식 프로세스가 작업이 끝났음을 부모 프로세스에게 알리는 것이다.
'Operating System' 카테고리의 다른 글
스케줄링의 개요 (0) | 2022.04.10 |
---|---|
스레드 (0) | 2022.04.06 |
프로세스 제어 블록과 문맥 교환 (0) | 2022.04.04 |
프로세스의 개요 (0) | 2022.04.03 |
무어의 법칙과 암달의 법칙 (@황의 법칙) (0) | 2022.04.01 |