운영체제(1) - 운영체제란?(3)
‘운영체제’를 공부하여 정리한 내용입니다.
6. 프로세스 관리
프로세스가 뭔데?
- 많은 OS 과목에서 프로그램과 프로세스를 명확하게 나눈다.
- 그런데 배우는 입장에서는 헷갈리는 경우가 있는 법이다.
- 그냥 이렇게 알아두자, 실행 시킬려고 메인 메모리에 적재해두고 CPU 시간을 소비하는 녀석은 프로세스다.
- 다음 실행할 명령이 무엇인지에 대해서 계속 생각하는 active object.
- Program Counter: PC등으로 다음에 어떤 명령어를 실행시킬 것인지 지정하는 등의 작업을 계속해서 한다. 이 경우는 sequence of instruction이라고 생각해도 괜찮겠다.
- 같은 프로그램이라도 2개 3개를 동시에 실행 시키는 경우가 있다(인터넷 브라우저 같은 거)
- 이런 경우는 프로세스가 2개 3개 실행되고 있는 것이다.
- 하지만 보조 기억 장치에서, 실행 되지 않고 그저 저장만되어 있는 프로그램 코드는 프로그램이다.
- 그저 저장된 파일이기에 passive object.
- 얘는 PC를 가지지 않는다.
- 그래서 명령어가 저장된 파일을 맞지만 PC등으로 다음에 어떤 명령어를 실행시킬 것인지 지정하는 등의 작업을 하지는 않는다
- 윈도우에서 주로 .exe 파일로 저장된 애들이다.
프로세스의 동작
- 메모리에 적재된 명령어가 순차적으로 실행된다. 물론 if나 goto 같은 것으로 그 순서가 순차적이지 않을 수 있겠지만 복잡하게 생각하지말자. 이는 PC에 따라 알아서 조절된다.
- 그리고 프로세스의 명령어는 항상 한번에 하나만 실행된다. (해당하는 프로세스 혹은 thread를 위해서)
- thread에 대해서는 추후에 논의하겠다.
시스템의 관점에서
- 프로세스는 한 시스템 내 작업의 단위이다.
- 프로세스들 중 일부는 OS 프로세스 - 시스템 코드를 실행
- 나머지는 User 프로세스 - 사용자 코드를 실행
- CPU가 Multi core를 가지고 있을 경우 병행 실행될 수 있는 가능성을 가진다.
- 항상이라는 것은 아니다. 어떤 프로세스 집합은 실행에 순서를 가지고 있는 경우가 있다.
- 이 때는 병행 실행이 불가능하다.
- 참고: 운영체제(1) - 운영체제란?(2)- 3.컴퓨터 시스템 구조
우리가 알아야 하는 내용에 대해서 정리하겠다.
- CPU에게 프로세스와 thread 스케쥴링
- 사용자 프로세스와 시스템 프로세스의 생성과 제거
- 프로세스의 일시 중지와 재실행
- 프로세스 동기화를 위한 기법 제공
- 프로세스 통신을 위한 기법 제공
7. 메모리 관리
필요성
- 앞서 프로세스는 메인 메모리에 올라가서 CPU 시간 등을 소비하는 동작하는 프로그램이라고 표현한바 있다.
- 그런데 우리는 이 프로세스를 상당히 많이 열고 컴퓨터를 사용한다.
- 이 때 이 프로세스들이 적절한 위치에 적재되고 올라갔다 내려갔다를 반복해야 우리가 최대한 많은 프로그램을 한번에 사용할 수 있다.
- 이를 빠르고, 안전하고, 적절 하게 해야한다.
우리가 알아야 하는 내용에 대해서 정리하겠다.
- 메모리의 현재 어느 부분이 사용되고 있으며, 누구에 의해 사용되고 있는지를 추적해야 한다.
- 어떤 프로세스(또는 그 일부)들을 메모리에 적재하고 제거할 것인가를 결정해야 한다.
- 필요에 따라 메모리 공간을 할당하고 회수해야 한다.
8. 저장장치 관리
필요성
- OS는 저장장치의 일부 공간을 차지하고 있는 정보에 단위를 매겨, 논리적인 저장 단위인 파일 을 정의한다.
- 이를 통해 우리는 모든 저장장치에 있는 정보가 파일이라는 논리적 단위 안에서 의미를 가지도록 추상화한다.
- 우리는 이 파일이라는 단위와 함께 저장장치들에 파일이 저장되는 것을 관리해줄 필요가 있다.
파일 시스템 관리
- 파일의 생성 및 제거
- 디렉터리 생성 및 제거
- 파일과 디렉터리를 조작하기 위한 프리미티브의 제공
- 파일을 보조 저장장치로 맵핑
대용량 저장장치 관리
- 자유공간의 관리
- 저장 장소 할당
- 디스크 스케쥴링
캐싱
- CPU가 동작할 때 자주 사용하는 정보의 경우는 메인메모리보다 더 빠르게 접근할 수 있는 캐시메모리에 일시적으로 저장해서 계속 사용한다.
- 이렇게 하면 프로그램이 정보를 사용하는 속도가 더 빨라질 수 있게 된다.
- 그리고 주로 프로그램은 특정한 일을 수행할 때, 생각보다 같은 정보를 자주 사용하는 경우가 많다.
입출력 시스템
- 버퍼링, 캐싱, 스풀링을 포함한 메모리 관리 구성요소
- 일반적인 장치 드라이버 인터페이스
- 특정 하드웨어 장치들을 위한 드라이버
나머지
추후 업데이트 목록
- \9. 보호와 보안
- \10. 분산 시스템
- \11. 전용 시스템
- \12. 계산 환경
- \13. 오픈소스 운영체제
Leave a Comment