[Operating System] Ostep virtualization - process
2022. 9. 25. 01:04ㆍCS/OS
Ostep
운영체제 아주 쉬운 세 가지 이야기 : 네이버 도서 (naver.com)
운영체제 아주 쉬운 세 가지 이야기 : 네이버 도서
네이버 도서 상세정보를 제공합니다.
search.shopping.naver.com
Operating Systems: Three Easy Pieces (wisc.edu)
Operating Systems: Three Easy Pieces
Blog: Why Textbooks Should Be Free Quick: Free Book Chapters - Hardcover - Softcover (Lulu) - Softcover (Amazon) - Buy PDF - EU (Lulu) - Buy in India - Buy Stuff - Donate - For Teachers - Homework - Projects - News - Acknowledgements - Other Books Welcome
pages.cs.wisc.edu
Process
process
- 사전적 의미 : 과정 / 처리라는 뜻을 가진 단어
- 공장에서 물건이 만들어지는 과정을 프로세스
- 일반적 정의 - 실행 중인 프로그램
- 생성 / 준비 / 실행 / 대기 / 종료의 상태를 거침
- 컴퓨터는 여러 일을 처리할 때 프로그램 요소들이 움직이는 일정에 따라 작업 순서를 매김
- 운영체제로부터 시스템 자원을 할당받은 작업의 단위
- cpu 시간 / 실행을 위해 필요한 독립된 메모리 영역
- 프로세스 주소 공간은 Code / Data / Stack / Heap으로 구성
- Code : 코드 자체를 구성하는 메모리 영역 (프로그램 명령)
- Data : 전역변수, 정적변수
- Stack : 지역변수, 함수 매개변수, 리턴값 (임시 메모리 영역)
- Heap : 동적 할당 시 사용 ( new(), malloc() 등)
- 기본적으로 프로세스는 최소 1개의 스레드를 갖는다.
프로세스 API(Application Programming Interface)
- 생성 (create)
- os는 새로운 프로세스를 생성할 수 있는 방법 제공
- ex ) 쉘에 명령어 입력 / 응용 프로그램 실행
- 제거 (destroy)
- 프로세스 제거 인터페이스
- 필요 없는 프로세스를 중단 / 강제 종료 / 종료시키는 API필요
- ex ) 작업관리자 - 작업 끝내기
- 대기 (wait)
- 실행 중지를 기다릴 필요가 있기에 대기 인터페이스 제공
- 제어 (miscellaneous control)
- 일시정지 / 재개 기능
- 상태 (status)
- 프로세스의 상태 정보를 얻어내는 인터페이스 제공
- 얼마나 실행되었는지, 프로세스가 어떤 상태에 있는지 등
- ex ) 작업 관리자
프로세스 생성
- 프로그램 코드와 정적데이터를 메모리, 프로세스 주소 공간에 load
- SSD에 특정 실행 파일 형식으로 존재
- 해당 바이트를 읽고 난 뒤 메모리에 필요한 부분만 저장 - paging / swaping
- 일정량의 메모리가 프로그램의 실행시간 스택(run-time stack)의 용도로 할당
- C 프로그램은 스택을 사용하여 지역변수, 함수 인자, 리턴 주소를 저장
- main()의 인자 - argc , argv 벡터 사용으로 스택 초기화
- heap 메모리영역 할당 → 동적으로 할당된 데이터 저장
- malloc() : 메모리에 공간 요청
- free() : 사용한 공간 반환
- 연결 리스트 / 해시 테이블 / 트리 : 가변적 자료구조 사용
- 입출력 및 초기화 작업
- 파일 디스크립터 : 표준 입력 / 표준 출력 / 표준 에러 → 영속성
- 프로그램 실행 준비 완료
프로세스 상태
- 실행 : 실행 상태에서 프로세스는 프로세서에서 실행 중, 프로세스는 명령어를 실행하고 있다
- 준비 : 실행할 준비가 되어 있지만 os에서 다른 프로세스를 실행하고 있는 이유로 대기
- 대기 : 프로세스가 실행을 위해 기다리는 동안 수행을 중단시키는 연산
자료구조
- 프로세스 리스트 : 프로세스의 상태 파악
- 어떤 프로세스가 실행 중인지 파악을 위해 부가적 자료 구조 유지
- 대기 상태인 프로세스도 파악
- 입출력 요청 완료 시 다른 프로세스를 준비상태로 전이 필요
- 레지스터 문맥(register context)
- 프로세스가 중단된 경우 해당 프로세스의 레지스터 값 저장
- 이 값을 복원하여 os는 프로세스 실행 재개 → 문맥 교환(context switch)
- cpu는 한번에 하나의 프로세스만 처리가능하다.
- 여러개의 프로세스를 처리해야 하는 상황에서는 각 프로세스들을 돌아가면서 처리함
- 하나의 프로세스를 처리하면 나머지 프로세스들은 대기를 하면서 현재의 진행 상태를 PCB에 보관한다
- PCB : Process Control Block
- 특정 프로세스에 대한 정보를 저장하고 있는 커널 내의 자료구조
- 해당 프로세스의 차례가 오면 PCB에서 상태를 복구한다
- final ( 최종 )
- 프로세스가 성공적으로 실행이 되었는지를 다른 프로세스( 주로 부모 - parent 프로세스 )가 검사할 때 유용
- 부모 프로세스는 자식 프로세스의 종료를 대기하는 시스템 콜을 호출
- 호출은 종료된 프로세스와 관련이 있는 자원을 정리할 수 있다고 알리는 역할
멀티 프로세스
멀티 프로세스
- 하나의 프로그램을 여러 개의 프로세스로 구성하여, 각 프로세스가 하나의 프로그램 내부에서 각각 하나의 작업을 처리하도록 하는 것
- 장점
- 여러 개의 프로세스 중 하나에 문제가 생기면 해당 프로세스만 종료하는 것으로 다른 프로세스에는 영향을 주지않는다
- 단점
- 앞에서 말한 문맥 교환에서의 오버헤드
- 문맥교환 과정에서 캐쉬 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되면 오버헤드 발생
- 오버헤드 : 프로그램의 실행 흐름에서 멀리 떨어진 위치의 코드를 실행시킬때 추가적인 시간, 메모리 ,자원이 사용되는 현상
- 프로그램 간 통신기법 IPC
- 운영체제에서는 안전성을 위해 자기 프로세스 메모리에만 접근 가능하도록 강제하고있다. 그렇기에 프로세스는 각자 독립된 메모리 영역을 할당 받았고 안전성을 위해서 하나의 프로그램에 속하는 프로세스들 사이에서 변수의 공유가 불가능이다.
- 그렇기에 IPC라는 방법을 사용해야 교환이 가능하다
- Inter-Process Communication - 컴퓨터 프로세스 간 통신
- 앞에서 말한 문맥 교환에서의 오버헤드
Virtualization
CPU가 여러 개 존재한다는 환상을 제공
- 적은 객수의 CPU 밖에 없더라도, 운영체제는 어떻게 거의 무한개에 가까운 CPU가 있는 듯한 환상을 만드는가?
- 가상화(virtualization)
- 시분할( time sharing )
- 원하는 수 만큼의 프로세스를 동시에 실행하게 함
- cpu를 공유하기에 각 프로세스의 성능은 낮아짐
- 공간분할 ( space sharing )
- 개체에 공간을 분할
- ex ) 디스크 : 블럭이 하나의 파일이 할당되면 파일을 삭제하기 전에는 다른 파일이 할당 불가
- 저수준 - 도구 - 매커니즘
- 필요한 기능을 구현하는 방법이나 규칙
- ex ) 문맥 교환 ( context switch ) : CPU에서 프로그램 실행을 중단, 다른 프로그램 실행
- 고차원 - 지능
- 정책 ( policy ) : os 내부에서 어떤 결정을 내리기 위한 알고리즘
- ex ) 스케쥴링 정책 : 과거 정보 / 워크로드에 관한 지식 / 성능 측정 결과를 이용
수정
22.11.18 프로세스에 대한 추가 이해부분 작성 및 정리
- 프로세스 정의
- 프로세스 주소 공간
- 문맥교환(Context Swwitch)
- 멀티 프로세스
'CS > OS' 카테고리의 다른 글
[OS] Operating System - Thread & Concurrnecy (1) | 2024.01.04 |
---|---|
[OS] Operating System 01 - Introduction 02 (0) | 2023.12.28 |
[OS] Operating System 01 - Introduction (1) | 2023.12.27 |
[Operate System] Thread (0) | 2022.11.18 |
[Operating System] Ostep virtualization - process API (0) | 2022.10.07 |