CS
-
[BOJ][Python] 백준 1475 방 번호CS/Algorithm & Data Structure 2023. 3. 9. 11:41
단순히 카드세트 배열하나 선언, 그 안에 값이 있으면remove하고 다음 번호 체크 없으면 한 세트를 pack에 추가해주고 해당 번호 하나를 뺐다. 특이한 점이라면 값이 6일때는 9가 있나체크(&반대의 경우 체크)를 했단 것이다. N = list(input()) for i in range(len(N)): N[i]=int(N[i]) pack = [] def addPack(): pack.extend([0,1,2,3,4,5,6,7,8,9]) cnt = 0 for i in N: if i in pack: pack.remove(i) elif i==6 and 9 in pack: pack.remove(9) elif i==9 and 6 in pack: pack.remove(6) else: cnt+=1 addPack() ..
-
[Design Pattern] GoF 디자인 패턴 개념 간단 정리CS/Design Pattern 2023. 3. 1. 18:06
Iterator 데이터들을 가져오는 방법은 Aggregator(혹은 Container. 동일한 형태의 데이터를 여러 개 지닌 것)의 종류에 따라 모두 다르기 때문에, 이를 통일된 방법으로 가져오도록 돕는 패턴. 다양한 형태의 Aggregator의 데이터에 접근할 때에 표준화 된 공통API. 따라서 한편으로는 Aggregator의 자료구조를 노출하지 않아도(혹은 몰라도) 내부 데이터에 접근할 수 있는 방법. Strategy 기능의 특정 부분을 실행중에 다른것으로 효과적으로 변경하는 기능 제공 필요할 경우 전략을 바꿀 수 있는 패턴 단계 1, 2, 3, ..., N 진행하다가 단계3을 변경하는 등 Template 어떤 기능에 대해실행 되어야 할 각 단계에 대한 순서만 정의 세부 구현(코드)은 상황에 맞게 작..
-
[OS] SuspendCS/OS 2023. 2. 26. 16:34
- Suspended processes 프로세스를 실행하다 I/O wait이 생겨 Blocked 시키다가 꽉 차면 그 다음 기능을 처리하기 위해 Suspend한다. Blocked 된 것의 일부를 Suspend. Suspend State의 Process는 Memory에 못 들어가고 Disk에 있다. Activate: Suspend에서 Ready로 가는 것 Swapping: 이렇게 Activate와 Suspend로 왔다갔다 하는 것 - Suspend 를 하는 이유 1. Swapping. 앞서 말한 개념(자리가 없어서(꽉 차서)) 2. 우선순위가 낮은 큐로 만들기 위해서 3. 유저의 요청 4. 타이밍 5. 부모 프로세스의 요청
-
[OS] Mutual Exclusion의 방법과 유의점CS/OS 2023. 2. 26. 16:23
Mutual Exclusion 방법 1. Compare & Swap while문을 돌면서 크리티컬 섹션에 접근이 가능한 상태인지 (bolt=0 등) 계속체크하며 대기한다. 이 방식은 계속 cpu를 잡아먹는 busy_wating이 발생한다. 2. Semaphore 크리티컬 섹션에 들어가기 전에는 자원을 쓴다는 표시로 sem_wait (값을 감소), 자원을 다 썼으면 semSignal(값을 증가)를 처리해서 mutual_exclusion을 한다. 이건 busy_wating이 없다. 이 외에도 많은 방법이 존재한다. Mutual Exclusion을 할 때 유의해야 할 점 1. 공유개체에 대해 한 번에 하나의 프로세스면 사용 가능. 2. deadlock이나 starvation이 없어야 함. 3. 프로세스를 사용..
-
[OS] I/O techniques(IO에서 데이터를 전송할 때)CS/OS 2023. 2. 26. 16:18
1. Programmed I/O I/O 모듈이 주기적으로 하나씩 체크한다. I/O 끝날때까지 기다렸다가 함. 그러므로 성능은 떨어진다. 2. Interrupt-Driven I/O 현재 진행하던 명령어를 마친 후 Interrupt체크를 한다. 3. Direct Memory Access (DMA) CPU는 명령어(read/write/시작주소 등)만 넘겨주고 나머지는 I/O랑 메인메모리가 한다. => 2번과 달리 cpu절약이 가능하다.
-
[OS] The Memory HierarchyCS/OS 2023. 2. 26. 16:08
registers cache MainMemory Magnetic Disk(CD, DVD) Magnetic tape 아래로 내려갈수록 용량증가, 액세스 시간 증가, 프로세서의 메모리 액세스 빈도 감소 - Principle of Locality 참조하고자 하는 프로세스들은 뭉쳐있다. (10을 수행 후 11을 수행하지, 5000을 수행하진 않는다는 의미) Cache: OS에 보이지 않는다. 다른 메모리 관리 하드웨어와 상호작용한다. 프로세서가 주기마다 메모리에 액세스 해야 한다. 작고 빠르며 locality가 있다. 메모리 사이클 시간에 의해 프로세서 실행이 제한된다.