운영체제 동작사례
운영체제는 일반적으로 자원관리자(resource manager)라고 정의된다.
운영체제는 컴퓨터에 있는 처리기(CPU), 메모리, 디스크 등의 자원을 관리하여 일반 사용자들이 컴퓨터를 사용할 수 있도록 지원해준다.
사용자가 프로그램 작성, 컴파일, 프로그램 수행이라는 일련의 요청을 수행함에 따라 운영체제가 디스크, cpu, 메모리 자원을 할당하여 변화한다.
운영체제의 초기 상태
- CPU
- 메모리
- 디스크
3개의 자원을 관리하고 있고 현재 아무도 사용하지 않는 상태(ex: 처음 운영체제를 설치한 상태)로 가정하고 있다.
여기서 사용자가 문서작업을 수행하면 이를 위해 운영체제가 필요한 자원을 제공해 주게 된다.
C 프로그램 작성
작성한 프로그램 저장
- 저장 요청은 운영체제로 전달되고 운영체제는 비휘발성 저장 매체인 디스크에 이 프로그램을 저장한다.
- 저장 내용은 file이라는 객체로 관리된다.
- 운영체제는 디스크의 일부 공간을 할당받는다.(일반적으로 4KB 크기의 공간을 할당 받으며 이것을 디스크 블록이라고 한다)
- 파일의 속성정보(생성시간, 만든 사람, 접근 제어 정보등)를 저장하기 위한 공간을 디스크에 할당한다. (inode)
- 마지막으로 파일 이름은 test.c와 inode 간에 연결을 만들고 inode와 파일의 내용이 들어있는 디스크 블록을 연결한다.
컴파일하여 실행가능한 바이너리 파일 생성
- test.c는 디스크 블록을 하나만 사용하지만 a.out 파일은 디스크 블록을 2개 사용한다.
- test..c 파일의 크기가 4KB보다 작아 하나의 디스크 블록이면 충분하지만 a.out은 7KB정도로 가정하여 두개의 디스크 블록이 필요하다.
프로그램 수행과 태스크
- 바이너리를 수행하면 그 결과 태스크(task)라는 새로운 객체가 생성된다. 이 객체는 수행중인 프로그램으로 정의되고 살아 움직이며 활동하는 객체다.
- 그리고 기존에 존재하던 태스크들(prev task)과 서로 경쟁하며 CPU를 사용하려 한다.
- 운영체제는 cpu 자원을 모든 태스크들에게 공평하게 나누어 주려고 노력한다. 대표적인 방법은 라운드-로빈이다. 한 태스크가 정해진 시간동안 cpu 를 사용하고 그 시간이 지나면 다음 태스크가 cpu를 사용하고 하는 단계가 반복적으로 모든 태스크들에게 적용되는 스케줄링 방식이다.
- 바이너리 파일이 태스크로 수행되기 위해서는 파일을 구성하고 있는 내용들이 메모리로 적재(load)되어야 한다.
- cpu는 디스크를 직접 접근할 수 없으며 우선 디스크의 내용이 메모리로 적재되어야 한다.
- 이를 위해 운영체제는 메모리 자원도 관리를 해야 한다.
태스크 메모리 관리
- 새로운 태스크는 메모리의 일부 공간(페이지 프레임)을 할당받는다.
- 여기에 바이너리 파일의 수행 이미지를 적재한다.
- 각 태스크는 세그먼트 테이블과 페이지 테이블을 이용해 자신에게 할당된 페이지 프레임을 관리한다.
'linux' 카테고리의 다른 글
linux task mangement (1) | 2022.10.05 |
---|---|
리눅스 커널 구조 (0) | 2022.10.05 |
Makefile tutorial (0) | 2022.09.28 |
Linux File System (0) | 2022.09.27 |
GCC 컴파일러 사용법 (1) | 2022.09.27 |