본문 바로가기

스터디-공부62

5장 CPU 스케줄링 연습문제 공룡책 (Operating System Concepts) 10th 개인적인 생각이므로 틀린 답변일 수 있습니다. 5.1 CPU 스케줄링 알고리즘은 스케줄 된 프로세스의 실행 순서를 결정한다. 하나의 프로세서에게 n개의 프로세스를 스케줄 하면 몇 개의 다른 스케줄이 가능한가? n에 대한 공식을 제시하라. n! = n x (n-1) x (n-2) x ... x 2 x 1 첫 프로세스를 선택하는 경우의 수 : n 두번째 프로세스를 선택하는 경우의 수 : n - 1 세번째 프로세스를 선택하는 경우의 수 : n - 2 … 이런식으로 쭉 이어나가면 위에 공식에 적은 것 처럼 n 팩토리얼 이 된다. 5.2 선점 스케줄링과 비선점 스케줄링의 차의점을 설명하라. 선점 스케줄링 : 현재 실행 중인 프로세스를 상황에 따라 .. 2023. 5. 16.
5장 목과 테스트 취약성 (3) 단위테스트 (블라디미르 코리코프) 5장 목과 테스트 취약성 (1) 5장 목과 테스트 취약성 (2) 에서 이어지는 글입니다. 2. 식별할 수 있는 동작과 구현 세부 사항 테스트에 거짓 양성이 있는 (리팩터링 내성에 실패하는) 주요 이유는 코드의 구현 세부 사항과 결합돼 있기 때문이다. 이러한 강 결합을 피하기 위해서는 최종 결과(식별할 수 있는 동작)를 검증하고 구현 세부 사항과 테스트를 가능한 한 떨어뜨려야 한다. 테스트는 “어떻게”가 아니라 “무엇”에 중점을 둬야한다. 2.1 식별할 수 있는 동작은 공개 API와 다르다 모든 제품 코드는 2차원으로 분류할 수 있다. - 공개 API 또는 비공개 API - 식별할 수 있는 동작 또는 구현 세부 사항 코드의 공개성은 private, public, inter.. 2023. 5. 12.
5장 목과 테스트 취약성 (2) 단위테스트 (블라디미르 코리코프) 5장 목과 테스트 취약성 (1) 에서 이어지는 글입니다. 1.2 도구로서의 목과 테스트 대역으로서의 목 Mock은 두가지 의미가 있다. 목 라이브러리(mocking library)의 클래스도 목으로 부르며 테스트 대역으로서의 목 도 있다. 1.3 스텁으로 상호 작용을 검증하지 말라 테스트에서 거짓 양성을 피하고 리팩터링 내성을 향상시키는 방법은 구현 세부 사항이 아니라 최종 결과(이상적으로 비개발자들에게 의미가 있어야 함)를 검증하는 것 뿐이다. 최종결과가 아닌 사항을 검증하는 것을 과잉 명세(overspecification)이라고 부른다. 1.4 목과 스텁 함께 쓰기 같이 사용할 수 있다. 1.5 목과 스텁은 명령과 조회에 어떻게 관련돼 있는가? 명령 조회 분리 (CQ.. 2023. 5. 12.
5장 목과 테스트 취약성 (1) 단위테스트 (블라디미르 코리코프) 0. 개요 런던파 : 테스트 대상 코드 조각을 서로 분리하고 불변 의존성을 제외한 모든 의존성에 테스트 대역을 써서 격리하자. 고전파 : 단위 테스트를 분리해서 병렬로 실행할 수 있게 하자. 테스트 간에 공유하는 의존성에 대해서만 테스트 대역을 사용하자. 테스트 대역 모든 유형의 비운영 가짜 의존성을 설명하는 포괄적인 단어 * 영화의 스턴트 대역 이라는 개념에서 비롯되었음. double에 대역 이라는 뜻이 있음. 목(mock) 테스트 대상 시스템(SUT)과 그 협력자 사이의 상호 작용을 검사할 수 있는 테스트 대역 목은 리팩토링 내성이 부족한 테스트를 초래할 수도 있지만 목을 사용하는게 바람직한 경우도 있다. 목과 테스트 취약성 사이에는 깊고 불가피한 관련이 있다. 어떻.. 2023. 5. 11.
3장 시스템 설계 면접 공략법 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - System Design Interview 3장 시스템 설계 면접 공략법 시스템 설계 면접이 있는 이유 두 명의 동료가 모호한 문제를 풀기 위해 협력하여 그 해결책을 찾아내는 과정에 대한 시뮬레이션. 시스템 설계 면접을 통해 볼 수 있는 것 - 설계 기술 능력 - 설계 과정에서 내린 결정들에 대한 방어 능력 - 면접관의 피드백을 건설적인 방식으로 처리할 수 있는지. - 협력에 적합한가 - 압박이 심한 상황에서도 잘 헤쳐 나가는가 - 모호한 문제를 건설적으로 해결할 능력이 있는가 - 적절한 타협적 결정(trade off)를 할 수 있는가 - 과도한 엔지니어링(over-engineering)을 하지는 않는가 - 완고함. 편협함은 없는가 효과적 면접을 위한.. 2023. 5. 10.
4장 스레드와 병행성 연습문제 공룡책 (Operating System Concepts) 10th 개인적인 생각이므로 틀린 답변일 수 있습니다. 4.1 다중 스레딩이 단일 스레드 솔루션보다 더 나은 성능을 제공하는 세 가지 프로그래밍 예시를 제시하라. 병렬로 나눠서 동일한 작업을 동시에 처리하기에 용이할 경우 (ex. 웹 서버, 연산처리) 병렬로 나눠서 여러 작업을 처리하기에 용이할 경우 (ex. 화면 gui) 4.2 Amdahl의 법칙을 이용하여 (a) 2개의 처리 코어와 (b) 4개의 처리 코어에 대해 60%의 병렬 구성요소를 가진 응용 프로그램의 속도 향상 이득을 계산하라. a : 1 / (0.4 + 0.6 / 2) = 1.42857143 배 b : 1 / (0.4 + 0.6 / 4) = 1.81818182 배 4.3 4.1절에 .. 2023. 5. 9.