다른 것들에 의해 lock이 잡혀있을 경우cs안에서 조건이 맞지 않을 경우\*\*많은 CPU를 소모한다는 단점이 있다.\*\*spinlock과 disabling interrupts(끼어들기를 못하게 하는 것)는 매우 짧고 간단한 cs에 유용하다.따라서 wasteful하
사용자(개발자)가 HW의 디테일을 신경쓰지 않고 편리한 abstraction 제공을 위해메모리 자원은 매우 비싼 자원인데 프로세스들에게 이 자원을 어떻게 분배할 것인지를 결정하기 위해 즉, 최소의 overhead로 성능을 최대화하기 위해프로세스 간에 격리를 제공하기 위
동작할 수 있는 프로세스들 중에 어떤 프로세스가 다음에 동작할 것인가를 결정한다.(context switch)빈번히 일어나고 빠르고 효율적으로 결정할 수 있어야 한다.이 화살표마다 스케쥴링을 결정해야 한다.1\. 모든 시스템은 no starvation(누군가는 배고프지
CPU를 사용하는 시간이 가장 짧은 것을 고르는 것SJF를 사용하게 되면 (모든 작업이 동시에 들어왔다면) ready queue에서 기다리는 평균 시간이 가장 짧다는 것을 증명할 수 있다.이 job이 CPU를 얼마나 사용할지 예측할 수 없다.그래서 추측하는 방식을 사용
4kb(일반적으로) 단위 frame으로 쪼개서 피지컬 메모리를 쪼개서 관리한다. 프로세스도 마찬가지로 쪼개서(page라고 부른다.) 관리가 가능하다. 유저의 입장에서 연속적이고 매우 큰 주소 공간(VAS)처럼 보인다. 하지만 실제로 피지컬 주소 공간은 흩어져서 배치되도
page replacement algorithmspage fault가 일어났을 때, OS가 특정한 페이지를 디스크로부터 물리적 메모리로 불러들이고(load) 물리적 메모리에서 누구를 내보내야(evict)할지 고민.내보내는데 최적인 페이지를 고른다. page fault
space overhead가 존재한다.(커널이 사용하는 메모리 공간에 메모리를 잡아야 한다.)\-> 32비트 주소 공간을 쓰고 page당 4kb를 쓴다고 하면 프로세스 당 대략 4mb의 page tables사이즈를 잡아야한다.따라서 이 오버헤드를 어떻게 줄일까?\->
정보를 블록 단위로(fixed-size) 저장각 블록들은 주소를 갖는다.블록 당 512B~32KB의 크기를 갖는다.각 블록에서 Read or Write를 독립적으로 수행할 수 있다.characters의 stream으로(들어오는 순서대로) 데이터를 주고 받는다.(deli
장치 독립성일정한 이름(open, read, write, close, a와b는 서로 다른 장치일 때, a.write, b.write 등..)에러 핸들링동기 vs 비동기버퍼링여러 개 디바이스에 공유 vs 전용(dedicated) 디바이스각 I/O 디바이스를 제어하기 위해
메인 메모리(휘발성) 밖에 있는 데이터를 저장하는 어떤 것전원이 나가도 데이터를 유지하고 있음(HDD, SSD)instruction의 직접적인 실행이 불가함.직접적으로 데이터를 read/write 불가함.용량이 메인 메모리보다 크고 싸고 느리다.지속적이다(전원이 나가도