운영체제는 실행되는 응용 소프트웨어가 메모리와 cpu, hdd등의 자원들을 효율적으로 사용할 수 있는 역할을 한다. 이러한 hw 자원들을 운영체제 내부에서 적절히 분배해 자원을 최대한 효율적으로 사용해야 한다.
이를 위해 운영체제는 다음과 같은 기능들이 있다.
<프로세스란 ?>
프로세스 :
프로그램이 메모리에 적재된 상태
로, 메모리에서 실행 중인 프로그램이다. 즉, 하드디스크에 프로그램이 저장되어 있으며, 프로세스는 프로그램의 인스턴스라고도 말할 수 있다.
이 프로세스를 관리하는 역할을 운영체제가 하고 있으며, 주요 기능은 다음과 같다.
주기억장치, 즉 메인 메모리는 프로그램이 적재될 수 있는 공간이며 cpu와 bus로 연결되어 address와 data등을 주고받는다. 이러한 메인 메모리가 효율적으로 관리되어야 한다.
예를 들어 이전 시간에 배운 MMU는 유저가 다른 유저의 메모리를 침범하거나 운영체제의 영역을 침범하는지 관리하는 역할 말고도, 재배치 레지스터를 통해 코드를 읽어온다.
메모리에 프로그램을 적재할 때 항상 같은 위치에 프로그램을 적재할 수 없는데, MMU는 프로그램이 동작할 때 필요한 데이터 등을 메모리의 특정 주소 위치에서 가지고 온다.
이렇게 되면 메모리에서 프로그램이 적재된 위치와 MMU에서 가지고 오는 위치가 달라져 제대로 동작할 수 없다. 따라서 MMU는 재배치 레지스터를 통해 이 주소들을 조절하는 역할을 한다.
cpu가 특정 위치를 가리키고, 재배치 레지스터가 이 주소에서 메모리에 프로그램이 있는 주소를 더해 cpu에서 원하는 데이터 위치와 메모리상 프로그램의 위치를 같게 만들어 준다.
이 때, CPU에서 MMU로 보내는 주소를 논리적 주소라 하고, MMU에서 메모리로 보내는 주소를 물리적 주소라고 한다.
이처럼 메인 메모리 공간을 효율적으로 관리해 주는 역할을 운영체제가 하는데, 주기억장치 관리의 주요 기능은 다음과 같다.
<주요 기능>
가상 메모리(Virtual Memory) : 메인 메모리는 hdd에 비해 용량이 작다. 그래서 Virtual Memory를 이용해 hdd의 일부를 main memory처럼 이용하는 방법이다.
: track, sector로 구성된 디스크를 파일과 mapping.
디스크는 파일과 섹터로 이루어져 있는데, 이를 사용자가 이용하기 편하도록 파일
이라는 논리적 형태로 관리한다.
파일 관리의 주요 기능은 다음과 같다.
<주요 기능>
보조기억장치는 컴퓨터에서의 하드디스크, 스마트폰의 플래시 메모리 등을 예로 들 수 있으며, 디스크에서 sector의 집합인 블럭을 관리하는 역할을 한다. 빈 블럭과 이미 사용된 블럭 공간을 적절히 관리해 주는 것이 보조기억장치 관리의 특징이다. 공간의 단위 - 블럭
보조기억장치 관리의 주요 기능은 다음과 같다.
<주요 기능>
프린트나 마우스 등 입출력장치를 관리하는 역할 또한 운영체제가 맡는다.
입출력장치의 주요 기능은 다음과 같다.
<주요 기능>
시스템 콜(System Call) : 운영체제 서비스를 받기 위한 호출로, 일반 어플리케이션이 os서비스(process 관리, 메인 메모리 관리 등)을 받기 위한 호출이다. sw interrupt에 속한다.
위의 사진처럼 유저 프로그램이 소프트웨어 서비스에 접근하기 위해서는 system call이 필요하다. process(위의 유저 프로그램)가 os의 서비스를 요청한 것이 system call이고, 이 system call은 소프트웨어 인터럽트이기 때문에 os의 ISR을 호출한다.
주요 시스템 콜에는 다음과 같은 예시들이 있다.
<주요 시스템 콜>