OS의 첫 번째 단원인 프로세스 관리 단원이다.
프로세스 단원에서 배워갈 목표는 아래와 같다.
목표
1. 프로세스는 무엇인가
2. 프로세스 생성, 제어 방법은 무엇인지 (인터럽트,시스템콜)
3. 프로세스가 실행 될 때 어떻게 효율적으로 관리 하는 지 (스케줄링)
4. 프로세스 끼리의 관계와 통신하는 방법은 무엇이 있는지 (IPC, 동기화)
5. 프로세스가 관리되는 중 발생할 수 있는 문제와 해결 방법
(Deadlock, RaceCondition)
정리
1. 프로세스는 무엇인지
1. 프로세스는 소스코드로 이루어져있는 프로그램이 메모리에 위에서 연속적으로 실행되고 있는
작업 단위(TASK)를 지칭한다 (프로세스는 서로 메모리가 분리 되어 있음)
2. 프로세스는 Code, Data, Heap, 메인스레드, 메인스레드 안에 Stack으로 이루어져 있다. (스레드는 나중에!)
- "Code" : 소스코드로 이루어진 프로그램을 구동하기 위해 소스코드를 저장해놓는 영역
- "Data" : 전역 변수, 정적 변수, 배열 등과 관련된 데이터를 저장해놓는 영역
- "Heap" : 동적 할당 된 정보들이 저장하는 영역
- "메인스레드" : 기본적으로 프로세스는 최소 1개의 스레드(메인스레드)를 통해 프로세스 실행
- "Stack" : 스레드 안에 위치, 지역 변수, 매개 변수, 함수, 함수 리턴 값 등 임시 메모리 영역
3. 프로세스는 컴퓨터에서 무수하게 수행되는 TASK와 유사한 의미로 중요한 개념이다.
아래와 같은 내용을 숙지하면 좋다.
- 프로세스는 어떻게 생성하고, 실행하는지,
- 어떻게 효율적으로 스케줄링하고, 통신하는 지
- 관리시에 발생하는 문제는 뭐가 있는 지
( 여담이지만, Docker 컨테이너도 리눅스 프로세스와 chroot 기반으로 동작한다네요 )
( 참고자료 : https://www.44bits.io/ko/post/change-root-directory-by-using-chroot )
2. 프로세스는 무엇인지
728x90
반응형