전체 글
-
💻 [OS 오퍼레이팅시스템] #15 | Virtual Memory IssueCS/OS 2022. 6. 13. 12:36
💻 Page Size - page size 증가 offset 비트 수 증가 -> # page 비트 수 감소 -> page table entry 수 감소 page table 크기 감소 - 문제 내부 단편화발생(각 페이지 크기가 커서 낭비 발생) entry수 작아서 메모리 금방 다 씀 💻 Faster Translation - TLB 사용 추가적인 메모리 접근을 줄일 수 있다. 페이지 테이블을 위한 캐시 - TLB의 문제 context switch 할 때, 각 프로세스마다 가상 주소 다른데 같은 TLB사용하면 의미 X - Sol1) Flush context switch할 때마다 TLB 초기화 (valid bits=0) 단점 : 초기 TLB 미스 많고, 모든 switch마다 해줘야해서 high cost - So..
-
💻 [OS 오퍼레이팅시스템] #13 | Deadlocks | 데드락, 뱅커스 알고리즘, 교착상태CS/OS 2022. 6. 13. 11:02
💻 데드락 (교착상태) - 데드락 - 시스템 자원을 두고 경쟁하거나 서로 통신하는 프로세스의 집합의 영구적 차단 - 집합의 각 프로세스가 다른 block된 프로세스에 의해서만 발생될 수 있는 이벤트를 대기하면서 block되면 프로세스 집합은 데드락 - 더이상 이벤트들이 발생할 수 없는 상태여서 두 개 이상의 프로세스가 더이상 진행될 수 없는 상황 두 개 이상의 프로세스에 의한 자원 요구의 충돌을 수반한다. - Resources (자원) [ 비선점 자원(non preemtable) ] - 빼앗을 수 없는 자원 - 보통 데드락이 비선점자원을 수반한다. - 비선점 자원 종류 2가지 : reusable and consumable [ 1) 재사용 자원(reusable) ] - 사용해서 사라지지 않고, 한번에 한 ..
-
💻 [OS 오퍼레이팅시스템] #14 | 메모리 관리 | 메모리 관리 요구사항, 주소 종류, Buddy System, Paging, SegmentationCS/OS 2022. 6. 13. 10:51
💻 용어 정리 - 정적 static 할당 컴파일 타임에 실행되어 실행 전에 미리 할당 된다. static 변수, 전역 변수 - 동적 dynamic 할당 런타임에 실행되어 요청 시에 할당된다. 실행 시점에야 메모리를 얼마나 사용할지 알 수 있는 상황이 있기 때문에 쓰인다(ex. 사용자의 입력으로 메모리 크기 알 수 있다던지) new, malloc - 메모리 관리 2부분으로 나뉜다. 1) OS(monitor, kernel) 2) User part : 다수의 프로세스로 나뉜다. 나뉘는 일은 OS가 하며 멀티프로그래밍 시스템의 핵심이다 -> memory management 💻 메모리 관리 요구사항 - 1) Relocation 재배치 다수의 프로세스 간 메인 메모리는 공유된다. - 프로그램이 어디에 배치될지 실행..
-
💻 [OS 오퍼레이팅시스템] #12 | Synchronization (조건 동기) | CV, Monitor, 생산자 소비자 문제, Reader와 Writer 문제CS/OS 2022. 6. 13. 04:54
💻 조건 동기 Condition Synchronization - 상호배제와 조건동기 1) Mutual Exclusion 상호배제 : 한 번에 하나의 쓰레드만 공유 자원에 접근 가능 2) Condition Synchronization 조건 동기 : 다수 쓰레드의 접근 동기화, 다수 쓰레드의 실행을 순서화 (특정 조건 만족할 때까지 대기, 조건 만족하면 재기시킴) 💻 Condition Variables 멀티쓰레드 프로그램에서, 스레드가 실행을 계속(재기)하기 전에 조건을 기다리는 경우가 많다. - Condition Variables (CV) 조건이 만족되기를 기다리는 공유변수 - 어떤 이벤트가 일어나기 전까지 쓰레드를 블락하는 방식에 쓰인다. - 조건에 따른 waiting queue(대기 장소)이다. - m..
-
💻 [OS 오퍼레이팅시스템] #11 | Synchronization (상호배제) | 동기화, 세마포어, 스핀락CS/OS 2022. 6. 12. 23:06
💻 Race Condition - Synchronization 쓰레드가 멀티쓰레딩 프로그램에서 같이 일할 때 공유 자원에 접근하는 것. -> 동기화 문제 발생 이 때, 올바르지 못한 결과가 나오는 문제 -> race condition - Race Condition 다수의 프로세스나 쓰레드가 동시에 공유 자원에 접근하고 변경하려고 할 때 발생하는 버그 문제. 공유 자원에 접근할 결과가 다음과 같다. - Non-deterministic한 Incorrect한 결과 - Non-Reproducible (재생산 불가능) 실행 시간에 달려있다. (실행 속도와 스케쥴링 타임 조절 불가능) - 멀티쓰레딩 : CPU 스케쥴러에 의해 '끼어들기(interleaving)'가 발생할 수 있다. -> 예측 불가능 - 멀티프로세서..
-
💻 [OS 오퍼레이팅시스템] #10 | Thread & Synchronization | 멀티쓰레딩, 프로세스와 쓰레드, ULT, KLTCS/OS 2022. 6. 12. 18:49
💻 프로세스와 쓰레드 - 프로세스 실행되고 있는 프로그램 일련의 명령 및 관련 시스템 리소스 집합의 실행으로 특정 지어지는 실행 단위 - 특성 1. 자원 소유권의 단위 2. 실행(프로세스 관점) 단위 또는 스케쥴링(커널 관점) 단위 - 쓰레드 한 프로세스는 단일 실행 순서를 갖는다. 실행 단위는 thread라고 부른다. 또는 LWP(Light Weight Process)라고 하며, 자원 소유 단위는 여전히 프로세스(또는 task)라고 한다. * 프로세스 세분화 -> 실행 단위, 자원 소유 단위 -> '쓰레드' 💻 멀티쓰레딩 - 멀티쓰레딩 한 프로세스에는 한 개 또는 다수의 쓰레드가 존재한다. 단일 프로세스 내에서 다수의 동시 실행 경로를 지원할 수 있는 OS의 능력이다. 쓰레드는 같은 프로세스의 다른 쓰..
-
💻 [OS 오퍼레이팅시스템] #9 | Process Scheduling 3 | 다중프로세서 스케쥴링, SQMS, MQMSCS/OS 2022. 6. 12. 00:34
💻 다중 프로세서 스케쥴링 - 단일 프로세서 스케쥴링 언제(when) 어떤(which) 작업이 실행될지 결정한다. - 다중 프로세서 스케쥴링 언제(when)뿐만 아니라 어디(where)에서 작업이 실행될지 결정 -> 어떤 CPU에게 작업을 할당할지 결정한다. - Issue ready queue를 어떻게 유지할 것인지 affinity를 어떻게 정의하고 활용할 것인지 applications를 어떻게 다중 프로세서에게 할당할 것인지 이질적 조합의 프로세서를 어떻게 관리할 것인지 프로세서들 간의 workload를 어떻게 균형을 맞출 것인지 - HW Issue : Cache Affinity 캐시 친화적 - SW Issue : Concurrency 병행성 캐시 효과로 인해(Memory에서 필요한 정보를 Cache로..
-
⚙️ [컴퓨터 구조] | Verilog를 이용한 회로 설계CS/컴퓨터구조 2022. 6. 9. 23:50
⚙️ HDL 하드웨어 기술 언어 - HDL 하드웨어 기술 언어를 이용하여 매우 복잡한 디지털 회로를 빠르게 설계할 수 있다. verilog나 VHDL은 가장 많이 쓰이는 HDL IEEE standard 1364 ⚙️ Verilog 기초 - 기초 특징 대소문자 구별. 신호 정의할 때 키워드 wire 이용 ex) wire CarryIn; - 숫자 표현법 bit 단위 길이 ' 진법 값 8'd100(10진수) = 8'h64(16진수) = 8'b0110_0100(2진수) = 100 10'h29C(16진수) = 10'b10_1001_1100(2진수) = 668 - module 범위 : 키워드 module로 시작하여 endmodule로 끝남 모듈 이름 : 알파벳으로 시작 가능, 숫자나 기호로 시작 X (예외로 기호 ..