운영체제의 소개

코린이서현이·2024년 3월 24일
post-thumbnail

들어가면서

운영체제를 배우고 있어서 배운 내용을 정리해두려고 한다.
아직은 초기 부분이라서 장황하게 느껴질 수도 있다! 

목표

개념들이 어떤 것이 있는지, 무엇을 배울지 알아보자.

📌 컴퓨터의 프로그램이란? 
📌 운영체제의 정의
📌 운영체제의 주요 구성 요소
📌 가상화
📌 영속성

컴퓨터 프로그램의 개념

Computer의 하드웨어 구성요소(components)

중앙처리장치인 CPU

  • 명령어를 해석(interpret)하고 실행하는 핵심 구성요소이다.

Main Memory, 주기억장치

  • volatile storage device
  • 보통 RAM을 말한다.

Secondary Storage , 보조기억장치

  • non - volatile storage device
  • SSD, HDD

I/O Device : 입출력 장치

주기억장치로 활용되는 RAM에 대해서 [관련 포스팅]

RAM과 ROM

  • RAM (Random Access Memory) : 휘발성의 주 기억장치로 쓰이는 메모리 (나름 종류가 어러가지)
    -
    ROM (Read Only Memory) : 비휘발성의 BIOS 코드를 저장하는 메모리, 시스템 레벨의 프로그램을 저장한다. 메인보드에 조그만 용량으로 부착되어있다.
    그러면 ROM에 OS가 담긴 것인지?

컴퓨터 프로그램

instruction들의 Seqence : 컴퓨터와 데이터들의 의해 실행되는 것
프로그램 파일은 실행 파일(exectable file) 형태로 보조저장장치에 install된다.

instruction

  • instruction은 기계언어로, 기계에 의해 해석되고 실행할 수 있다. 또한 운영체제가 관리하는 최소 단위이다.

Process

  • 운영체제가 실행중인 프로그램이다.
  • 프로세스는 하드웨어 상태를 읽거나 갱신할 수 있다. 바로 메모리!

프로세스의 하드웨어 상태?

  • 메모리, 레지스터(PC, IP, 스택 포인터, 프레임 포인터)

프로세스 AIP (운영체제가 반드시 API로 제공해야하는 기능들)

  • 생성
  • 제거
  • 대기
  • 각종제어
  • 상태

프로세스의 생성 = 프로그램의 실행

프로그램을 준비하고 실행하는 것은 OS, 운영체제가 담당한다. 프로그램이 실행되기 위해서는 메모리로 적재해야한다.

  1. 프로그램은 보조기억장치에 실행 파일 형태로 존재한다.
  2. 운영체제는 보조기억장치의 바이트를 읽어서 프로그램 코드와 정적 데이터를 주기억장치에 적재load한다.
  3. (프로그램이 사용할 스택메모리, 힙메모리을 생성하고 초기화한다.)

→ 운영체제는 CPU에게 프로세스를 넘기고 프로그램을실행한다.

  1. CPU는 프로그램 instuction(명령어)를 하나씩 읽어 실행한다.

프로그램은 보조기억장치에 있고, 필요할 때마다 주기억장치에 적재한다.


프로그램에서 필요한 부분만 적재하고 적재를 미룬다. 자원은 한정적이고 실행할 프로그램은 많기 때문에 모든 것을 가져오지 않고, 빈번히 실행되는 것을 메인메모리에 적재한다.
→ 이런 적재의 규칙 또한 OS의 역할이다.

운영체제란

운영체제의 정의

An operating system is software that manages the computer hardware, as well as providing an environment for application programs to run

운영체제는 컴퓨터 하드웨어를 관리하고 응용프로그램이 실행될 수 있는 환경을 제공하는 소프트웨어이다.

어떤 환경을 제공하는가? → 프로그램이 잘 동작할 수 있도록, 한정적인 자원임에도 충분한 자원이 있는 것처럼 운영을 해야한다.

운영체제의 역할


운영체제는 효율적인 자원관리와 오류가 나지 않도록 정확한 제어를 담당한다.

  1. OS is a resource allocator : OS는 자원을 할당한다.

    프로그램들은 한정적인 자원; CPU, Memory, Disk을 가지고 경쟁한다.

    → 어떻게 걍쟁 상태를 해소할 것인지, 누구를 선택할 것인지 어떻게 운영할 것인지를 결정

    – Many programs to run → Sharing the CPU
    – Many programs to concurrently access their own instructions and data → Sharing memory– Many programs to access devices → Sharing disks

  2. OS는 프로그램을 컨트롤한다.

    문제없이 프로그램이 동작할 수 있도록 제어한다.

프로그램을 실행하기 쉽게, 자원을 공유할 수 있도록, 프로그램이 장치와 상호작용하는 것을 관리한다.

인터럽트

키보드에서 입력을 두개 받아서 더한후에 출력을 한다.

I/O 장치에서 이벤트가 발생했을 때


I/O장치는 CPU보다 훨씬느리다.

폴링 방식은, 반복적으로 장치의 상태 레지스터를 읽어서 수신 가능 여부를 계속해서 확인한다. 이 과정동안 자른 프로세스에게 CPU를 양도하지 않고, 대기 하고 있다. → CPU의 낭비가 발생한다.

→ 인터럽트를 활용해서 CPU 연산과 I/O 작업을 중첩 시키는 것이다.


인터럽트란?

장치가 작업을 끝마치면 하드웨어 인터럽트를 발생시키고 CPU는 운영체제가 미리 정의해놓은 인터럽트 서비스 루틴 (ISR)/인터럽트 핸들러(운영체제 코드의 일부)를 실행힌다.

인터럽트 벡터는 인터럽트가 발생했을 때, 그 인터럽트를 처리할 수 있는 서비스 루틴들의 주소를 가지고 있는 공간이다.

인터럽트 서비스 루틴(ISR)은 인터럽트 요청에 의해 발생되는 인터럽트에 따라 기능을 처리하는 기계어 코드 루틴

Untitled

인터럽트의 기능

  1. 인터럽트는 인터럽트 벡터를 통해 인터럽트 서비스 루틴으로 제어권을 넘겨준다.
  2. 인터럽트 된 명령어의 주소, 데이터 등 정보를 레지스터(데이터)와 PC(다음 명령어주소)를 저장하여 CPU를 안정적으로 유지한다.
  3. 인터럽트는 한번에 하나만 실행된다.
  4. 트랩은 오류나 사용자 요청으로 발생하는 소프트웨어 생성 인터럽트이다.
  5. 운영체제는 인터럽트를 중심으로 운영된다.

트랩 : 시스템 콜이 이용하는 하드웨어 명령어

프로그램이 실행될 때 일어나는 일들

  1. 메인메모리에서 instrution을 load한다. :
  2. 프로세서는 명령어를 fetches한다. :
  3. decode한다.
  4. excute한다. (실행결과는 기본적으로 메인메모리에 저장된다.)
  5. 다음명령어로 이동해 실행을 반복한다.

사용자모드와 커널모드

  • 사용자 응용 프로그램은 사용자 모드에서 실행된다. 하드웨어적으로 제한되어있어 디스크 입/출력 네트워크 패킷 송신 등이 제한된다.
  • 커널 모드는 운영체제의 중요한 코드들이 실행된다.

System call

사용자(응용프로그램)이 프로그램실행, 메모리나 장치에 접근할 때 사용한다. like 표준라이브러리)

시스템 콜을 실행하기 위해 프로그램은 trap이라는 특수 명령어를 실행한다.
트랩 명령어는 커널 안으로 분기하면서 커널 모드로 상향조절한다.

트랩

trap(트랩) : 사용자 모드에서 커널 모드로 진입하는 명령어
return-from-trap : 사용자 모드로 돌아가는 명령어

가상화

중요한 것은 OS가 가상화를 어떻게 시키느냐에 대한 내용

  • 운영체제는 물리적 자원을 가상의 형태로 변환한다.
  • 운영체제는 프로세스를 번갈아가면서 실행해 많은 작업을 동시에 처리하는 것 처럼 느끼게 된다.
  • 메모리 공유는 동시성 문제를 발생시킨다. → 해결 방법 고민

영속성

  • 주기억장치중 하나인 DRAM은 휘발성 기억장치이기 때문에 메모리의 데이터는 쉽게 손실될 수 도 있다.
  • 하드웨어, 소프트웨어는 데이터를 영속적으로 관리해야한다.
    • 하드웨어 : = 하드드라이버, SSD 의 입출력장치
    • 파일 시스템 : 디스크(보조기억장치)를 관리하는 운영체제 소프트웨어를 말한다.
      • 사용자가 생성는 파일을 안전하게 관리해야한다.

파일 시스템 (file system)

  • 프로그램에서의 입출력은 system call → 운영체제는 이를 file system으로 전달
  • 파일 시스템은 쓰기 요청을 지연시켜 위합된 요청을 한번에 처리하는 방식으로 성능을 향상한다.
  • 쓰기 중 시스템의 고장에 대비하기 위해 Journaling(write-ahead logging) copy-on-write 기법을 사용한다.
profile
포기만 하지 않는다면 언젠간 도달한다!

0개의 댓글