운영체제 | 운영체제란?

Jihun Kim·2021년 10월 26일
0

운영체제

목록 보기
1/5
post-thumbnail

🏋️‍♂️ 운영체제는 무엇일까?

운영체제를 알아보기 전에 일단 컴퓨터와 정보에 대해 알아보자!

컴퓨터란?

  • 정보를 처리하는 기계

정보란?

  • 불확실한 상황을 측정해서 수치적으로 표현한 것

정보를 어떻게 처리할까?

정보의 최소 단위는?

  • bit(binary digit)
  • 정보가 8bit라면 표현할 수 있는 정보의 양은 2^8 bit(1byte)
    (참고로 2^1024 = 1Mb)

정보의 처리

  • 정보의 상태 변환: 0 -> 1, 1 -> 0
  • 부울 대수로 모든 연산이 가능하다.(NOT, AND, OR)
  • 이에, 논리 게이트를 만들 필요가 있다(NOT, AND, OR, XOR, NAND, NOR)
    👉 이를 통해 논리 회로를 만드는 것이 가능해진다.
  • 정보의 저장과 전송: 플립-플롭, 데이터 버스, Radio Frequency(RF)

컴퓨터가 정보를 어떻게 처리할까?

  • 덧셈: 반가산기, 전가산기
  • 뺄셈: 2의 보수 표현법
  • 곱셈과 나눗셈: 덧셈과 뺄셈의 반복
  • 실수: 부동 소수점 표현법
  • 함수: GOTO(내가 원하는 곳으로 점프 혹은 되돌아 오기)

컴퓨터는 만능인가?

  • 범용성(universality): 소프트웨어에 따라 하드웨어의 목적이 달라질 수 있다.
    👉 NOT, AND, OR 게이트만으로 모든 계산을 할 수 있다.
    👉 NAND 게이트만으로 모든 계산을 할 수 있다.
    👉 범용 컴퓨터: general-purpose computer

  • 계산 가능성(computability): 컴퓨터는 튜링 머신으로 계산 가능한 것을 계산한다.
    👉 Turing-computable: 튜링 머신으로 계산 가능한 것
    👉 정지 문제(Halting problem): 튜링 머신으로 풀 수 없는 문제

프로그램이란?

  • 프로그램은 컴퓨터에 어떤 작업을 수행하게 만드는 명령어들의 집합이다.

그렇다면 운영체제는 무엇인가?

운영체제는 컴퓨터 시스템을 운영하는 체제이며 이를 소프트웨어적으로 구현한다.

운영체제도 프로그램인가?

  • 운영체제도 프로그램인데, 컴퓨터에서 항상 실행중인 프로그램이다.
  • 운영체제는 시스템 서비스를 어플리케이션 프로그램에 제공한다.
  • 운영체제는 프로세스, 리소스(파일, input, output), 유저 인터페이스(마우스, 키보드) 등을 관리한다.


🥊 운영체제의 개념과 구조

운영체제의 정의

컴퓨터에서 항상 운영되고 있는 프로그램 하나를 의미한다.
👉 보통 '커널(kernel)'이라 한다.

Bootstrap program

  • 컴퓨터를 키는 것을 부팅한다고 하는데, 이는 사실 bootstraping(부츠의 끈을 묶는 것) 하는 것이다.
    👉 컴퓨터 전원을 키면 cpu가 ROM에 저장해 놓은 명령어를 불러오는데 이를 bootstrap 프로그램을 실행시킨다고 한다.
  • 운영체제를 메모리에 로딩하는 역할을 한다.(메모리는 휘발성이기 때문에 부팅시 매번 로딩해 주어야 한다.)

Interrupts

  • 예를 들어, 키보드가 'a'라는 문자를 눌렀을 때 키보드에 있는 컨트롤러가 이를 cpu에 알리게 되는데 이를 'interrupt' 방법으로 알려주게 된다.
  • CPU와 I/O device가 통신하는 방법 중 하나이다.
  • 'bus'를 통해 언제든 interrupt를 trigger할 수 있다.
    👉 즉, bus를 통해 CPU에 시그널을 보내는 것이다.

폰 노이먼 architecture

  • instruction-execution cycle을 말한다.
    👉 컴퓨터에 내릴 수 있는 명령을 instruction-set이라 정의하고 이 명령어 집합에 있는 명령어들로 구성된 컴퓨터 프로그램을 메모리에 로딩하면 메모리에 있는 명령어들을 CPU가 하나씩 fetch 하고 execute하는 싸이클을 폰 노이먼 architecture라 한다.
    👉 메모리에서 instruction register(IR)를 가져와 명령어들을 집합으로 구성해 주게 되며, 그러면 명령이 decode 되고 execution이 일어나게 되는 것이다.

Storage system

  • 메모리는 휘발성이다. 따라서 비휘발성 저장장치가 필요한데 이러한 storage system은 여러 계층으로 구성되어 있다.
    👉 용량과 접근 속도에 따라 구성된다.

Storage-device hierarchy
1. register: 가장 빠른 것은 CPU 내의 register이다(CPU 내의 저장공간).
2. cache: RAM보다 빠르지만 훨씬 더 비싸서 용량을 크게 할 수 없다.
3. main memory(RAM)
4. SSD(solid-state disk): 메모리 형태의 하드디스크
5. hard disk(HDD): 자기장을 이용한 하드 디스크
6. Optical disk
7. Magnetic tapes: 백업 용도

I/O Structure

  • OS code의 대부분은 I/O를 managing 하는 역할을 한다.


컴퓨터 시스템의 구조(Computer System Components)

아래의 네 가지로 이루어져 있다.

  • hardware
  • operating system
  • application programs
  • user

Computer System Components의 정의

  • CPU
  • Processor
  • Core
  • Multicore: CPU 하나에 코어가 여러개 있는 것(즉, 하나의 CPU에 CPU core0(registers + cache) & CPU core1(registers + cache) 의 구조로 이루어져 있는 것이다.)
    👉 그 개수에 따라 듀얼/쿼드 코어 등이 되는 것이다.
  • Multiprocessor: Multicore가 여러개 붙으면 multiprocessor가 된다.

Symmetric Multiprocessing(SMP)

  • 과거에는 processor가 1개였지만 현재는 processor는 1개가 아니고 여러개이다.

Multiprogramming

  • 여러개의 프로그램을 동시에 메모리에 올려놓고 실행하는 것
  • 메모리에 여러 개의 프로세스가 동시에 올라가게 되어 CPU 사용 효율을 높이게 된다.
    👉 즉, Multitasking(=multiprocessing)이 가능하게 된다.
    👉 Multitasking은 multiprogramming의 확장으로 보면 되며 CPU가 일을 빠르게 바꾸어 가며 하는 것을 말한다.
  • multiprogramming 된 process들을 cpu가 time-sharing하며 동시에 실행(concurrent) 하는 것을 multitasking이라 한다.
    👉 CPU Scheduling: multitasking 중 여러개의 프로세스가 동시에 돌 수 있을 때 cpu 효율을 가장 좋게 만드는 선택 방법이 무엇인 지를 결정하는 것을 말한다.

Operation의 두 가지 모드

  • user mode와 kernel mode가 있다.
    👉 다른 프로그램에 방해가 되는 일을 할 수 없도록 막는 일 역시 os가 한다.
  • kernel mode가 아니면 직접적으로 hardware를 제어할 수 없다.


🕹 Virtualization

Virtualization(가상화)는 단일 컴퓨터의 하드웨어를 여러 다른 실행 환경으로 추상화할 수 있는 기술

VMM(Virtual Machine Manager)

  • VMM을 이용하면 하나의 하드웨어 안에서 여러 개의 os를 실행할 수 있다.
    👉 예를 들면 VMware, XEN, WSL 등이 있다.

Computing Environments

  • 과거에는 Client-Server computing을 주로 했다.
    👉 웹 서버(서버)와 웹 브라우저(클라이언트)의 request-reponse 관계이다.
  • 단일 컴퓨터의 하드웨어를 여러 다른 실행 환경으로 추상화할 수 있는 기술
  1. 현재는 mobile computing(Android, iPhone)
  2. Peer-to-peer computing(P2P)
    👉 대표적으로 음악 또는 영화 파일 공유가 있다.
    👉 파일 공유하는 데 서버가 필요 없고 파일 조각들을 여러개로 나누어 p2p 네트워크가 파일 조각들을 갖고 있게 된다.
    👉 여기서 더 확장된 것이 원장을 부여한 'bitcoin'이다.
  3. Cloud computing(AWS, Azure, GCP)


🏏 Operating System services

  • OS는 컴퓨터 프로그램이 실행될 수 있는 환경을 제공해 준다.
    👉 이 중 가장 중요한 것이 'process' & 'thread'이다.

OS와 사용자가 상호작용할 수 있는 방법

  • CLI: 명령어를 이용함
  • GUI: 그래픽 유저 인터페이스
  • Touch-screen interface(최근의 스마트폰)

OS와 컴퓨터 응용 프로그램이 상호작용할 수 있는 방법

System call을 이용한다.

  • OS가 제공하는 서비스를 'system call'로 호출한다.
  • system call을 호출하는 것을 API(Application Programming Interface)라고 부르기도 한다.
    👉 현재는 API가 보편화 되어 os 뿐 아니라 어떤 라이브러리도 다 API라 볼 수 있다.
    👉 따라서, 'os의 API'가 system call이라 보면 된다.
profile
쿄쿄

0개의 댓글