0xSEUNGJU
CodeMonkie
0xSEUNGJU
전체 방문자
오늘
어제
  • 분류 전체보기 (15)
    • linux (8)
    • web (2)
    • android (0)
    • data science (1)
    • algorithms (3)
    • 보안 (1)
    • hardware (0)

블로그 메뉴

  • github
  • playground

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
0xSEUNGJU

CodeMonkie

운영체제 동작 사례
linux

운영체제 동작 사례

2022. 10. 4. 10:14

운영체제 동작사례

운영체제는 일반적으로 자원관리자(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
    'linux' 카테고리의 다른 글
    • linux task mangement
    • 리눅스 커널 구조
    • Makefile tutorial
    • Linux File System
    0xSEUNGJU
    0xSEUNGJU

    티스토리툴바