OS는 소프트웨어로 전자장치가 있는 디바이스에 대부분 올라간다.
OS는 device위에 올라가는데 device마다 사용하는 부품이 다르기에 제어 방식이 다르다.
이에 하드웨어에 관계없이 application이 돌아가도록 해주는게 OS
Abstraction : 하드웨어에 종속받지 않고 동일한 기능을 수행할 수 있도록 함
BUT OS가 제공하는 api만 사용 + 모든 프로그램 제어권은 OS가 가짐
여러 application이 한번에 돌아가고 싶은데 하나의 CPU는 한 순간에 한 프로그램만 실행 가능하다.
여러 application이 각각 다른 하드웨어 잡고 있는 상황이면 아무것도 실행되지 않는다.
이 것을 해결해주는게 OS
Managing : 모든 application을 관리해 중간에 조율, 요청을 조합해 H/W 자원을 나눠줌
OS가 모든 application을 관리하기에 application은 H/W 직접적으로 사용 못함
application은 OS에 요청하고 OS는 필요시 RAM을 제어한다.
User or Developer
Application
OS
H/W
아무것도 가지고 있지 않고 그냥 input이 들어오면 output을 내주는 것
시키는 것만 처리하고 계산을 빠르게 하는 연산장치일 뿐이다.
정보를 기억하고 저장 - bit 단위 정보 저장, 갱신 등
memory가 storage마다 특성이 달라서 어떻게 사용하느냐에 따라 효율성이 다름
memory를 어떻게 사용하냐가 OS가 해야하는 일
보통 메인 메모리로 DRAM을 많이 쓰는데 그 이유는 DRAM이 더 빠르기 때문이다.
따라서 CPU에게 명령하고 데이터를 직접적으로 전달하는 건 DRAM
CPU
SRAM
DRAM
SSD
따라서 정보를 SSD에 저장 후 전원 off, 전원이 들어오면 RAM에 옮김
👉 정반대 특성 + 상호보완성
Bootstrap program : ROM
ROM이라는 지워지지 않는 메모리에 들어있음 * 요즘은 flash memory
휘발성
main memory로 CPU에 명령과 데이터를 주며 CPU와 대면한다.
비휘발성
하드디스크보다 요즘 flash memory를 더 많이 씀
엄청 빠른 것과 크고 느린 것 사이에 자주 쓸 건 중간으로 옮겨 전체 시스템의 성능을 높이는 것
하나의 칩에 여러 개의 core를 넣음
bit : 있다 없다를 표현할 수 있는 가장 작은 정보
byte (8 bit) : 메모리 주소의 기본 단위
memory 👉 8개 단위로 끊어서 저장 = 하나의 주소에 한 byte 저장되어 있음
data storage (write) : 0과 1로 변경하는 것
data retrieval (read) : 특정 주소의 현재 상태를 읽어올 수 있음
Assembler : assembly를 binary로 바꿔주는 것
Complier : high level language를 assembly로 바꿔줌
shell을 이용해 명령을 줌
클릭해서 실행
어떤 일을 다른 PC, 어떤 일은 서버에서
hypervisor와 VM 혼용되어 사용
운영체제 위해 VM 깔고 그 위에 kernel
real-time embedded system - 정해진 시간 내에 명령 완료되는게 보장이 되냐
번갈아가며 프로그램 실행 - 동시에 작동하는 것처럼 보임