운영체제가 뭘까?
왜 배워야 할까?
→ 운영체제란, 컴퓨터 시스템을 운영하는 소프트웨어!
->컴퓨터는 뭐지?→ 정보를 처리하는 기계!
→ 정보는 뭔데? → 클로드 섀넌의 정의에 의하면,
어떤 사건 x가 있을 때, 이 사건 x의 정보량(부피, 크기 )는[I(x)] 이 사건이 발생할 확률[P(x)]에 -log2 한 값이라고 정의한다.
ex> 동전 던지기
어떤 사람 A가 동전을 던져서 앞면이 나왔는지, 뒷면이 나왔는지(확률은 1/2) 를 B에게 전달 한다고 할 때, 전달하는 정보의 량[I(x)] = -log2(1/2) =- log2(2^(-1)) = log2(2) = 1
•
정보의 단위는 뭘까? ⇒ bit
즉, 정보란 “어떤 불확실한 상황”을 측정해서 수치적으로 표현한 것이다!
•
이런 정보를 컴퓨터는 어떻게 처리할까?
정보의 최소단위 : bit(binary digit)
정보를 처리하기 위해서는, 정보의 상태 변환할 수 있는 물리적인 장치가 필요하다!( 0 → 1, 1 → 0)
이 장치가 바로, NOT, AND, OR이다. (트랜지스터등의 물리적인 게이트로도 가능)
ex> NOT ⇒ not 1 —> 0 , not 0 —> 1
논리 게이트 : NOT, AND, OR, XOR, NAND, NOR
⇒ 이 6개의 논리 게이트를 만들고 나면
논리회로 : IC, LSI, VLSI, ULSI, SoC, ... 를 만들수 있다.
◦
무어의 법칙, 황의 법칙등에 맞춰들어가며 엄청나게 증가하던 chip의 직접도도 거의 한계에 다 다르고 있다.
정보의 저장과 전송 : 플립-플롭, 데이터버스, RF
아니 그래서 컴퓨터가 어떻게 정보를 처리하지?
•
덧셈 : 반가산기, 전가산기
•
뺄셈 : 2의 보수 표현법
•
곱셈과 나눗셈 : 덧셈과 뺄셈의 반복
•
실수 연산 : 부동 소수점 표현법
•
함수는? GOTO
•
삼각함수, 미분, 적분, 사진 촬영, 동영상 재생 ...
컴퓨터는 만능인가?
•
컴퓨터는 범용성이 있다.
→ NOT, AND, OR 게이트 만으로 모든 계산을 할 수 있다. 사실 NAND 게이트만으로도 모든 계산을 할 수 있다.
⇒범용 컴퓨터(general-purpose computer)
→ 필요에 따라 sw를 다운로드 해서 사용 가능한 것이 컴퓨터다!
•
계산가능성
튜링머신으로 계산 가능한것.
→정지문제(Halting Problem) : 튜링머신으로 풀 수 없는 것 → 컴퓨터는 풀 수 없다.
cf > 폰 노이만이 왜 컴퓨터의 아버지 인가?( 컴퓨터의 할아버지는 튜링)
메모리에 프로그램을 저장하는 구조(RAM에 프로그램이 저장되고, 이 프로그램은 명령들로 이루어져 있는데, 이 명령들을 CPU가 한줄한줄 fetch해서 execute 하는 구조.⇒ 이걸 폰 노이만이 만듬.
폰 노이만 아키텍쳐 ⇒ ISA(명령어 집합으로 프로그램을 구성하는 아키텍쳐)
프로그램은 뭐지?
⇒ 명령어들의 집합!( a set of instructions) → 컴퓨터 하드웨어에게 어떤 task를 시킨다.
(왼) 작성한 코드 / (오) 작성한 코드를 compile 한 후 생성된 기계어(읽을 수 있게 표현 한 어셈블리어)
이 명령어를 통해 메모리에 정보가 할당, 저장되는 등의 일들이 일어난다.
운영체제도 프로그램일까?
⇒ 프로그램이다! 그런데, 컴퓨터에서 항상(running at all times)실행 중인 프로그램이다!
시스템 서비스를 애플리케이션 프로그램에게 제공(하드웨어와 애플리케이션 사이의 인터페이스 제공)하고, 프로세스, 자원, 유저 인터페이스 등등을 관리한다! ⇒ 운영체제의 역할 중에서 공부할 것의 50%는 프로세스 관리(manage processes)에 대한 내용들이다.
그래서, 운영체제가 뭘까?
⇒ 하드웨어 디바이스들을 제어할 수 있고, 앱들과 하드웨어 디바이스 간의 인터페이스를 제공하고, 유저가 생각하는 인풋, 아웃풋 들에 대해서 작업을 할 수 있게 인터페이스(유저와 앱&하드웨어 간의)를 제하는 소프트웨어.
cf> 아두이노나 라즈베리 파이등에서는 사용자(유저)가 직접 하드웨어를 다 제어한다. 시스템이 성장 할 수록, 하드웨어가 복잡해지면 복잡해질수록 운영체제가 필요해지고 많은 일을 다 해준다.