Skip to content

Latest commit

 

History

History
174 lines (134 loc) · 10.9 KB

1. 운영체제와 컴퓨터.md

File metadata and controls

174 lines (134 loc) · 10.9 KB

운영체제와 컴퓨터

목차

개요

image

해당 문서는 운영체제의 역할과 구조, 컴퓨터의 요소를 다룹니다.

핵심 용어

  • 운영체제(OS, Operating System) : 컴퓨터 하드웨어와 응용 프로그램 간의 상호작용을 관리하고 제어하여 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스이다.
    • cf. 펌웨어(firmware) : 운영체제와 유사하지만 소프트웨어를 추가로 설치할 수 없다.

운영체제의 역할

  1. CPU 스케줄링과 프로세스 관리: CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 변환을 관리한다.
  2. 메모리 관리: 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리한다.
  3. 디스크 파일 관리: 디스크 파일을 어떠한 방법으로 보관할지 관리한다.
  4. I/O 디바이스 관리: I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리한다.

운영체제의 구조

image

1. 인터페이스(GUI, CUI)

  • 의미: 사용자가 전자장치와 상호 작용할 수 있도록 도움을 주는 시스템이다.
  • 참고 사항: 인터페이스에서 GUI가 없고 CUI만 있는 리눅스 서버도 존재한다.

2. 시스템콜

  • 의미: 운영체제가 커널에 접근하기 위한 인터페이스이다.
    • 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용한다.
  • 사용 맥락
    1. I/O 요청인 fs.readFile()이라는 파일 시스템의 파일을 읽는 함수를 발동한다.
    2. 유저 모드에서 커널 모드로 들어가 파일을 읽는다.
    3. 다시 유저 모드로 돌아가 그 뒤에 있는 유저 프로그램 로직을 수행한다.
    • 위와 같은 과정을 통해 컴퓨터 자원에 대한 직접 접근 차단할 수 있고, 프로그램을 다른 프로그램으로부터 보호할 수 있다.
  • 장점: 시스템콜은 하나의 추상화 계층이기에 네트워크 통신이나 데이터베이스와 같은 낮은 단계의 영역 처리에 대한 부분을 많이 신경 쓰지 않고 프로그램을 구현할 수 있다.

3. 커널

  • 의미: 운영체제의 핵심 부분이자 시스템콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 한다.
  • 커널의 역할
    1. 자원 관리
    2. 보안
    3. 추상화

4. 드라이버

  • 의미: 하드웨어를 제어하기 위한 소프트웨어로 하드웨어와 커널 사이에서 명령어나 데이터를 전달해주는 역할
    • 드라이버는 장치에 의존적이기에 각각의 장치마다 장치 드라이버가 존재한다.

유저모드와 커널모드

image
  • 배경: 커널에서 중요한 자원을 관리하기에 사용자가 그 중요한 자원에 접근하지 못하도록 모드를 2가지로 나눈다.
  • 구분 방법: 시스템콜이 작동될 때 modebit를 참고해서 유저 모드와 커널 모드를 구분한다.
    • modebit: 1 또는 0의 값을 가지는 플래그 변수
  • 유저모드 (modebit = 1)
    • 의미: 유저가 접근할 수 있는 영역을 제한적으로 두고, 프로그램의 자원에 함부로 침범하지 못하는 모드
    • 유저는 여기서 코드를 작성하고, 프로세스를 실행하는 등의 행동할 수 있다.
    • ‘유저 애플리케이션 코드가 유저모드에서 실행된다.’라고 표현할 수 있다.
  • 커널모드 (modebit = 0)
    • 의미: 모든 자원(드라이버, 메모리, CPU 등)에 접근, 명령을 할 수 있다.
  • 유저모드와 커널모드의 전환
    • 배경: 프로세스가 실행되는 동안에 프로세스는 수없이 유저모드와 커널모드를 왔다갔다 하면서 실행된다.
    • 요청(유저모드 → 커널모드): 프로세스가 유저모드에서 실행되다가 특별한 요청이 필요할 때 system call을 이용해서 커널에 요청한다.
    • 반환(커널모드 → 유저모드): system call의 요청을 받은 커널이 그 요청에 대한 일을 하고 결과값을 system call의 리턴 값으로 반환한다.
  • 예시 상황
    1. I/O 요청인 fs.readFile()이라는 파일 시스템의 파일을 읽는 함수를 발동한다.
    2. 유저 모드에서 커널 모드로 들어가 파일을 읽는다.
    3. 다시 유저 모드로 돌아가 그 뒤에 있는 유저 프로그램 로직을 수행한다.
    • 위와 같은 과정을 통해 컴퓨터 자원에 대한 직접 접근 차단할 수 있고, 프로그램을 다른 프로그램으로부터 보호할 수 있다.

컴퓨터의 요소

  • 컴퓨터를 이루는 네 가지 핵심 부품
    1. 중앙처리장치(CPU)
    2. 주기억장치(메모리)
    3. 보조기억장치
    4. 입출력장치
image

CPU (Central Processing Unit)

  • 의미: 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행 · 처리하는 가장 핵심적인 컴퓨터의 제어 장치
    • 관리자 역할을 하는 운영체제의 커널이 프로그램을 메모리에 올려 프로세스로 만들면 이를 CPU가 처리한다.
  • 구성: 제어장치, 레지스터, 산술논리연산장치
  • 제어장치(CU, Control Unit)
    • 의미: 프로세스 조작을 지시하는 CPU의 한 부품
    • 역할: 입출력장치 간 통신을 제어하고, 명령어들을 읽고 해석하여 데이터 처리를 위한 순서를 결정한다.
  • 레지스터(register)
    • 의미: CPU 안에 있는 매우 빠른 임시기억장치
    • 특징: CPU와 직접 연결되어 있어 연산 속도가 메모리보다 수십 배에서 수백 배까지 빠르다.
    • 배경: CPU는 자체적으로 데이터를 저장할 방법이 없기에 레지스터를 거쳐 데이터 전달한다.
  • 산술논리연산장치(ALU, Arithmetic Logic Unit)
    • 의미: 산술 연산논리 연산을 계산하는 디지털 회로
  • CPU의 동작 과정
    1. 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램 읽어온다.
    2. CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장한다.
    3. 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보낸다.
    4. 제어장치는 1~3 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어한다.
  • 인터럽트: CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능
    • 하드웨어 인터럽트: 키보드, 마우스 등 IO 디바이스로 인한 인터럽트이다.
    • 소프트웨어 인터럽트: 트랩이라고도 하며, 프로세스 오류 등으로 프로세스가 시스템콜을 호출할 때 발동한다.

메모리

  • 의미: 전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치
    • 현재 실행되는 프로그램의 명령어와 데이터를 저장한다.
  • 메모리의 종류
    • RAM(Random Access Memory): 임시 데이터 저장 공간으로서, 컴퓨터가 실행 중인 프로그램 및 작업에 필요한 데이터를 저장한다.
      • 메모리라는 용어는 보통 RAM을 지칭한다.
    • ROM(Read Only Memory): 읽기 전용 메모리로서, 주로 컴퓨터나 기타 디지털 장치에 필요한 고정된 데이터나 프로그램을 저장한다.

DMA 컨트롤러

  • 의미: I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치
  • 역할: CPU에만 너무 많은 인터럽트 요청이 들어오지 않도록 CPU의 일을 부담하는 보조 역할을 한다.

타이머

  • 의미: 몇 초 안에는 작업이 끝나야 한다는 것을 정하고 특정 프로그램에 시간 제한하는 역할을 한다.
  • 역할: 시간이 많이 걸리는 프로그램이 작동할 때 제한을 걸기 위해 존재한다.

디바이스 컨트롤러

  • 의미: 컴퓨터와 연결되어 있는 IO 디바이스들의 작은 CPU이다.
  • 로컬 버퍼: 디바이스 컨트롤러 옆에 붙어 있으며, 각 디바이스에서 데이터를 임시로 저장하기 위한 작은 메모리이다.

레퍼런스