[OS] Hard Disk Drives
·
OS
Rotation Delay회전하는데 걸리는 시간Seek Time트랙과 트랙 사이를 이동하는 시간Track skewRotation Delay와 Seek Time으로 인한 지연으로 디스크의 헤드를 제대로 위치시키기 위한 시간Multi-zoned바깥쪽 트랙을 안쪽 트랙보다 더 많은 섹터를 갖게 함용량을 크게 할 수 있음cache디스크에서 읽거나 쓴 데이터를 보관write-back읽어서 바로바로 씀성능이 안 좋음안정적일반 데이터write-through한꺼번에 씀성능이 좋음캐시 관점에서 일관성이 깨짐전원이 꺼지는 상황 발생하면 안 좋음민감한 정보 I/O 시간 계산T_io = T_seek + T_rotation + T_transfer (자기장 정보를 전기장 정보로 바꾸는 시간)R_io = transfer_size ..
[OS] Common Concurrency Problems
·
OS
병행성 관련 버그1. Deadlock이 아닌 버그원자성 위반 버그쓰레드의 코드 행 간에 interrupt가 걸려서 불필요한 변화가 생기는 것해결lock 사용하여 상호 배제순서 위반 버그쓰레드들의 순서가 바뀌면 에러컨디션 변수 사용2. Deadlock 관련 버그발생 이유코드가 많아지면 구성 요소 간 복잡한 의존성 발생캡슐화Deadlock 조건상호 배제(Mutual Exclusion): 쓰레드가 자신이 필요로 하는 자원에 대한 독자적인 제어권 주장ex) lock 획득점유 및 대기(Hold-and-wait): 쓰레드가 자신에게 할당된 자원을 점유한 채로 다른 자원을 대기ex) 이미 lock을 얻었는데 다른 lock을 위해 대기비 선점(No preemption): 자원을 점유하고 있는 쓰레드로부터 자원을 강제적..
[OS] Semaphore
·
OS
세마포어멀티프로그래밍 환경에서 공유자원에 대한 접근 제어를 하는 방법으로 사용되며, 1개의 공유되는 자원에 제한된 개수의 프로세스(Process), 또는 스레드(Thread)만 접근할 수 있도록 한다.  value와 wait Q를 가짐초기화 중요초기 값 적절하게 설정해야 함구슬 주머니에서 구슬을 넣고 빼는 동작과 비슷초기화 중요초기 값 적절하게 설정해야 함구슬 주머니에서 구슬을 넣고 빼는 동작과 비슷 ☁️ sem_waitvalue 값 감소(구슬을 가져가는 것)wait Q에 넣고 sleep☁️ sem_postvalue 값 증가(구슬을 넣는 것)wait Q에서 제거하여 Ready Q로 옮김 이진 세마포어(락)초기 value 값 1로 설정 순서 보장 세마포어초기 value 값 0으로 설정컨디션 변수를 사용했던..
[OS] Condition Variables
·
OS
컨디션 변수: 쓰레드 실행에서 어떤 조건이 만족하기를 대기하는 큐wait(): 쓰레드가 스스로 잠재우기 위해 호출signal(): 조건이 만족되기를 대기하며 잠자고 있던 쓰레드를 깨울 때 호출wait 하기 전에 lock을 걸고 wait 할 때 lock을 풀어줘야 함, wait에서 깨어나면 다시 lock을 얻음join 먼저부모가 wait 한 후, 자식 signal하면 정상 동작exit 먼저부모가 wait 하기 전 interrupt가 걸려서 자식이 signal하면 정상 동작📍 컨디션 변수가 없는 경우join 먼저부모가 wait 한 후, 자식이 signal 하면 정상 동작exit 먼저자식이 signal 한 후 부모가 실행되어 wait 하면 깨어날 수 없음📍 락 제거한 경우join 먼저부모의 컨디션 변수의 ..
[OS] Locks
·
OS
락: 임계 영역에 대한 상호 배제 기법평가 방법상호배제데드락 X기아 X공정성: 쓰레드들의 락 획득에 대한 공정한 기회성능  Interrupt 제어 lock을 통해 interrupt를 키고 끄는 방법단점interrupt를 제어하는 것은 특권 명령, user mode에서 사용 X멀티프로세스에서 동작 X ← 가장 치명적멀티프로세스는 CPU가 2개 이상인데, 하나의 CPU에서 interrupt를 꺼도 다른 CPU에 영향을 주지 않음interrupt를 오래 꺼버리면 중요한 장치의 interrupt를 놓칠 가능성속도가 느림  Store/Load만 사용lock을 통해 flag를 설정단점flag를 확인하고 설정하는 부분 사이에 interrupt가 걸리면 경쟁 조건 발생  Test-And-SetSpin O → 성능 저하..
[OS] Concurrency and Threads
·
OS
Process와 MultiThread 환경에서 차이는 스택이 1개 있는지 여러 개(각 쓰레드 별로) 있는지Prcess는 외부 저장 장치 실행 파일들의 경로를 가지고 일을 지정하는 방식으로 실행Thread는 내부 코드의 함수 시작 주소를 가지고 일을 지정하는 방법으로 실행TCB(Thread Control Block)는 tid, state, context를 필수로 가짐 병행성critical section(임계 영역)공유 자원에 접근하기 위한 코드 조각race condition(경쟁 조건)명령어의 실행 순서에 따라 결과가 달라지는 상황, 멀티 쓰레드가 거의 동시에 임계 영역을 실행하여 공유 자원에 접근하려고 할 때 발생indeterminate(비결정적)실행할 때마다 결과가 다른 경우mutal exclusion..
[OS] Beyond Physical Memory
·
OS
메커니즘스왑 공간디스크에 페이지들을 저장할 수 있는 일정 공간 캐시관리캐시 미스 종류 Compulsory Miss: 캐시가 비어 있어 그 항목을 처음 참조하기 때문에 발생 Capacity Miss: 캐시의 공간이 다 차서 새로운 항목을 캐시에 넣기 위해 어떤 항목을 내보내야 할 때 발생 Complict(Collision) Miss: 캐시의 같은 공간을 참조해야할 때 발생 Coherence(Invalidation) Miss: 다른 프로세스가 메모리에 업데이트될 때 발생매핑 방법Direct MApped CacheSet Associative CacheFully Associative Cache AMAT(평균 메모리 접근 시간)= Tm + (Pmiss * Td)Tm: 메모리 접근 비용Td: 디스크 접근 비용Pmi..
[OS] Paging
·
OS
페이징고정된 크기로 주소 공간을 나누는 메모리 관리 기법➡️ 메모리 관리가 쉬워짐.➡️ 외부 단편화 발생 X➡️ 내부 단편화는 발생 가능page(페이지): 고정 크기 단위 ⬅️ 가상 메모리page frame(페이지 프레임): 고정 크기의 슬롯의 배열 ⬅️ 물리 메모리offset: 해당 페이지에서 떨어진 거리페이지 크기만큼(bit)ex) 페이지 크기가 16bytes면 4bit 차지물리 주소 변환 시, offset 유지VPN(가상 페이지 번호)VPN 크기 = 가상 주소 크기 - offset 크기PFN(물리 프레임 번호)주소 변환 정보에 VPN과 매칭 되어 있음.물리 주소 = PFN Bit Map: 물리적 메모리 사용 상태를 1bit를 가지고 나타낸 것문제점주소 변환 시, 메모리에 계속 access해야 하므로..