0. 리눅스 vs 윈도우

리눅스 : 프로세스 단위 실행

윈도우 : 오브젝트 단위 실행 , 오브젝트를 관리하기 위해 핸들이라는 것이 있다.

 

운영체제 - 프로그램이 실행되면 프로세스 ID를 부여한다. 하나의 프로세스는 하나의 스레드로 구성된다.

 

1. 컴퓨터 최상단에 연산처리를 하는 CPU가 존재한다.

폰노이만 구조 : 모든 데이터는 메모리를 통해 접근한다. = 기본적인 컴퓨터 시스템

 

CPU : 컴퓨터 최상단, 연산처리(+,-), 직접 디스크 접근 못함

   |

M.M : 모든 데이터를 메모리를 통해 연산 

   |  ------- 케이블을 통해 전기신호로 연결

   | -------- 입출력장치 : ex) 키보드. 메인보드에 붙어있지 않음

디스크 : 보조기억장치 ex) HDD, SSD, usb

 

 

cpu = 이진수를 연산한다.
연산하는 소자가 필요하다. Gate이다.

a+b=c
Cpu안에서 임시적으로 저장하는 것은 레지스터이다.
IR : ex) +, -
MAR : 메모리 내에 그 데이터 어디있는지 주소를 가르킨다.
MBR : 메모리에서 데이터를 가져와서 저장한다.


2. 병렬처리와 core
a+b=c
c+1=d
이거는 병렬처리 못한다.

하지만
a+b=c
c+d=e
이거는 병렬처리 할 수 있다.

작은 cpu(=core) 하나 만들어서 각각 처리할 수 있다.
core가 많아질수록 훨씩 빨라진다.


3. 각자의 크기가 다르기 때문에 메모리 매핑
CPU
| 메모리 매핑방법: 1) direct 2)Associate 3)Set Associate
Cache(ex) sram)
| 메모리 매핑방법: 1) direct 2)Associate 3)Set Associate
M.M(ex)삼성전자 dram)
| 메모리 매핑방법: 1) direct 2)Associate 3)Set Associate
DISK

1. 다이렉트 매핑 : 한번에 찾아간다.= 유일한 주소로 찾아간다.=Hash(패스워드 말고도 쓰임)=Direct Access = Random Access = Hash Access
2. 연관 매핑 : 1번갔더니 10가 있다. 그럼 10번 가서 찾으면 그게 진짜 주소이다. 만약 연관만 해결해주는 cpu가 있다면(=core를 하나 더 둔다면) 속도는 매우 빨라진다. = Associate = 전용기계를 둔다. = 비싸다

direct는 연관에 비해서는 조금 저렴하다.
그래서 중요한 것은 연관 매핑을 쓰고 아닌것은 다이렉트를 쓰자. 합치면 하이브리드이다.


4. 메모리에 올리는 작업(Paging)과 Allocation

연산하려면 아래에서 위로 데이터를 올려주어야한다. = Loader = grub

CPU

Cache : 좁다.

M.M : 공간할당(Allocation)시 같은 크기로 할당 ? Page , 필요한 만큼만 할당 ? Segment

DISK : 공간 넓다.

5. 데이터를 어디에 둘까? Placement

가장 메모리 남는 공간이 많은 곳에다가 넣음 = worst fit
가장 딱맞는 공간에 넣음 = best fit
처음 있는공간에 넣음 = first fit
빈 공간에 넣음 = next fit

6. 디스크가 꽉 찾을때? 
제일 오래된 애 내보내기 = FIFO
자주 읽지 않은 애 내보내기 = LFU(빈도)
(실제사용)최근에 사용하지 않은 애 나가 = LRU
* LFU와 LRU는 (조회했는지 안했는지 = 참조여부) 가 기준임
수정되지 않은 애 나가 = NUR


7. 컴퓨터가 부팅할때 미리 띄워놓기
Prefetch ex) C:\..\Prefetch에 워드 올려놓기
Demand : 요청하면 띄워줌


8. 하드디스크 기록법
섹터단위로 읽는다.
FIFO = FCFS  순서대로
SSTF 짧은 작업 대로
SCAN 엘레베이터 알고리즘 

 

 

 

+ Recent posts