cpu의 발전 --> 멀티코어 cpu
cpu와 dram사이에 시스템 버스로 연결되어 있는데
cpu가 메모리를 접근시 병목이 심하다
dram보다 작지만 훨씬 빠른 캐시 메모리
운영체제의 역할
운영체제는 사용자와 직접 대화하지 않는다.
사용자는 프로그램과 대화하고 프로그램과 운영체제가 대화한다.
ex) 아래한글 프로그램을 통해서 웹브라우저를 통해서 운영체제와 대화
배치처리 운영체제는 데이터 로딩하고 실행하는 단순한 역할을 수행한다.
time sharing 운영체제
cpu가 빨리지고 사람은 느리니 번갈아 가면서 서비스 한다.
사용자는 자기가 혼자쓰는것처럼 생각하지만 컴퓨터는 여러명을 처리한다. but어느정도 오버헤드를 수반한다.
벨 연구소에서 unix를 만든다. 최초로 고급언어(c)로 작성된 운영체제
mutitaking운영체제
프로세스는 실행중인 프로그램은 가리킨다.
타임 쉐어링에서 발전
context switching
문맥은 register memory에 저장한다.
잦으면 자원을 낭비하는 결과를 가져온다. 적당한 비율로 해야한다.
우선순위가 있는데 더 중요한 프로세스는 자주 수행할 수 있다.(우선순위가 존재한다.)
코드 데이터 힙 스택 영역
메인 메모리 크기에도 구현이 맞지 않아 일부만 메인 메모리에 넣고 실행한다.
가상 메모리 시스템 어떻게 바꾸느냐?
가상메모리를 물리주소로 어떻게 바꾸느냐?>
물리적인 장치는 하드디스크밖에 없다.
-->고장이 많다. 수명이 있다.
데이터 센터에서는 2년마다 한번씩.
모바일 디바이스에서는 못쓴다.
지금은 플래시 메모리로 만든 ssd나 microSD를 사용한다
Fat 파일 시스템이 호환성이 좋다. Mac linux window 어디나 꽂으면 동작한다.
Usb에 많이 쓴다.
write through
write back
리눅스의 data의 경우 30초마다 플러싱
메타데이터는 5초마다 한번씩..(약간 더 중요하다고 생각해서)
SSD
읽기 쓰기 속도 빠름 충격에 강함 휴대전화에 사용
섹터단위로 기록 , FTL이라는 소프트웨어가 하드디스크와 똑같이 만들어준다.
운영체제가 성능을 깎아먹는다.
-->운영체제 코드가 너무 복잡하다.
운영체제는 프로세스가 아니다.
운영체제는 실행의 주체가 아니다.
프로세스가 부탁할때 코드를 대여해줄뿐
아무 프로그램도 실행 할 것이 없으면 그때 실행하는
Idle 프로세스가 있다. 무한루프 되면서 기다리는것은 아니고 요즘은 그냥 cpu를 다운시켜서 동작을 한다.
애뮬레이트
가상머신을 쓰면 좋은점.?
가상머신 위에 서비스하는 프로그램을 돌리면 얘만 죽인다. 안정성이 뛰어나다.?