A machine processing information
A quantitative representation that measures the uncertainty
I(x)=-log2(P(x))
둘중 하나인 경우 확률 P는 1/2가 되고 이때 정보는 1임.
즉 1비트를 정보 1로 정의함.
논리연산을 할수 있을 때 half adder, full adder로 덧셈을 처리하고 2의 보수를 사용하여 뺄셈을 처리하고 덧셈을 여러번하여 곱셈을 처리하고 뺄셈을 여러번하여 나눗셈을 처리한다. 실수에 대해서는 binary float number를 사용하여 처리한다. 여기까지의 기능을 따로 구성한것이 gpu이다.
함수는 goto로 정의하고 goto가 정의되면 모든 if, while문을 구현할 수 있으며 이를 통해 미적분, 삼각함수, 사진 등의 모든 내용을 처리할 수 있다.
컴퓨터는 만능이 아니다.
:컴퓨터는 논리연산자로 모든 계산을 구현 할 수 있다고 하였는데 복잡하게 논리 회로를 구현할 필요없이 nand하나만 있으면 모든 계산을 할 수 있다.
:turing-computable-튜링머신으로 계산할 수 있는
turing-computable 하지않은 문제는 컴퓨터도 풀 수 없다.
ex)Halting problem
Alan Turing-Turing machine
John Von Neumann-ISA(Instruction Set Architecture)
:명령어 집합을 가지고 순서대로 실행하는 아키텍쳐
:rom에 저장 되어 있다가 전원이 켜지면 POST(power on self test)를 한후 문제가 없으면
하드에 있던 os프로그램을 작동시키기 위해 os를 ram으로 loading하는 프로그램.
:cpu가 매번 i/o등의 작업에 관여하면 고급 자원인 cpu를 낭비하게 되기 때문에 평상시에는 프로세스의
처리를 하다가 i/o device등에서 interrupt signal이 발생할 경우 interrupt service routine
을 실행하는 방식이다.
: cpu 외부 device에서 발생하는 interrupt signal에 의해 발생하는 interrupt
: 응용프로그램에 포함된 예외 처리, systemcall등에 발생 되는 interrupt로 주로 응용프로그램이 관리자 모드로 전환하여 kernel의 기능을 사용하려고 할 때 발생한다.
: instruction-set을 수행하는 방식으로 작동한다. 먼저 instruction을 memory로 부터 fetch한 후 instruction register에 저장하고 decoding한 후 execute한다.
register-cache-main memory-hard disk
왼쪽으로 갈수록 cpu access time 짧은 대신, 용량 대비 비용 높음.
DMA(Directed Memory Access):cpu 를 거치지 않고 device와 memory가 직접 데이터를 주고 받음.
:multi-core design
cpu는 한 개만 두고 core를 여러개 두어 다중 프로세스를 처리함.
:multi-processor
cpu 자체를 여러개 둠.
:memory에 여러 작업을 올려놓고 동시에 실행시킴.
multitasking(=multiprocessing)
:multiprogramming 상황일때 여러 프로그램을 동시에 실행시키는 것. time-sharing을 통해 여러 job을 자주 context-switching한다.
이러한 개념을 concurrency라고한다.
cf)parallelism과는 다르다.
:multiprocessing에서 자연스럽게 다뤄질 수 밖에 없는 개념이 cpu scheduling.
:kernel 모드에서는 user 모드 보다 더 다양한 하드웨어에 접근 할 수 있다. 예를들어 user 모드에서는 프로세스 자신에게 할당된 메모리중 일부에만 접근 할 수 있고 i/o device등에는 접근이 제한 되지만,kernel mode 자기에게 할당되지 않은 메모리와 cpu레지스터, i/o device등에 접근할 수 있다. kernel mode에서 프로그램이 동작하기 위해서는 systemcall을 하면 된다. systemcall을 사용하면 Software interrupt가 발생하여 작업을 처리하게 된다.
:하나의 하드웨어 자원으로 여러개의 운영체제를 작동시키는 것.
Virtual Machine Manager라는 것을 사용하여 이용함.
VMM은 멀티 프로그래밍환경에서 cpu-scheduling을 하는 것처럼 vm scheduling을 해줌.Concurrency를 만족시켜 준다.
ex)VMware, XEN, WSL etc.