[인프런 워밍업클럽 CS 2기] 2주차 발자국
학습기간
1주차 2024-10-07(월) ~ 2024-10-11(금)
강의 수강
학습내용 요약
운영체제
섹션3. CPU 스케쥴링
SJF(Shortest Job First)
Burst Time이 짧은게 먼저 실행되면 평균 대기시간이 짧아지기 때문에 짧은 작업먼저 실행
RR(Round Robin)
프로세스에게 일정시간을 할당하고 시간이 종료되면 남은작업은 큐의 맨뒤로 밀려나게됨
MLFQ(Multi Level Feedback Queue)
<aside>
MLFQ 는 가장 일반적으로 쓰이는 CPU 스케쥴링 기법으로, RR 알고리즘의 업그레이드 버전임
섹션4. 프로세스 동기화
프로세스 간 통신
프로세스는 독립적으로 실행되기도 하지만 다른 프로세스와 데이터를 주고받으며 통신하기도 함
공유자원과 임계구역
프로세스가 통신할 때 공동으로 이용하는 변수나 파일 등 을 공유자원이라고 함
상호배제 메커니즘(세마포어)
int semaphore(정수형 변수)
세마포어를 사용하면 공유자원에 여러 프로세스가 동시에 접근하지 못하기때문에 동기화문제가 발생하지 않음
상호배제 메커니즘(모니터)
모니터는 세마포어의 단점을 해결한 상호배제 메커니즘이며, 운영체제가 처리하는것이 아니고, 프로그래밍 언어차원에서 지원하는 방법임
섹션5. 데드락
데드락(교착상태)
여러 프로세스가 다른작업이 끝날때 까지 기다리다가 아무도 작업을 진행하지 못하는 상태
교착상태의 필요조건 4가지 ⇒ 한가지라도 충족되지 않으면 교착상태가 발생하지않음
데드락 해결 - 교착상태 회피(Deadlock avoidance)
프로세스에게 자원을 할당할 때 어느정도 자원을 할당해야 교착상태가 발생하는지 파악해서 교착상태가 발생하지 않는 수준의 자원을 할당하는 것
알고리즘 (Algorithm)
섹션3
재귀 (recursion)
어떠한 것을 정의할 때 자기 자신을 참조하는 것을 뜻함
재귀함수는 자기 자신을 계속 호출하다가 특정 조건 (=기저조건(탈출조건)) 이 나오면 함수를 종료해야하므로 기저조건이 반드시 있어야 함
재귀적으로 생각하기
하위문제의 결과를 기반으로 현재문제를 계산
버블 정렬 (Bubble Sort)
배열에서 앞과 뒤를 비교해 큰숫자를 뒤로 자리를 바꿈
[ 4, 3, 2, 1] 가 있으면 [1, 2, 3, 4] 가 됨
선택 정렬 (Selection Sort)
배열의 정렬되지 않은 영역의 첫번째 원소를 시작으로 마지막 원소까지 비교 후 가장 작은 값을 첫번째 원소로 가져옴
[6, 3, 4, 1, 2, 5] 가 있으면 [1, 2, 3, 4, 5, 6] 이 됨
학습내용 회고(칭찬, 아쉬움, 보완, 차주 목표 등)
저번주보다 밀도있게 공부했다 .ᐟ
2~3일에 걸쳐 하루 학습 목표량을 정해 정리하면서 들으니까 성취감도 있고 미션하기도 수월해졌다.
그런데 알고리즘..재귀함수 하노이탑 코드구현부터 머리에 안들어오기 시작했다... ㅠㅠ(그래도 정렬은 머리에 들어옴)
다음주는 스케쥴상 별일이 없다면 감자님이 짜주신대로 스케쥴을 진행해보면 어떨까 싶다.
미션
해결과정 요약 (접근 관점, 해결 과정, 채택 이유)
재귀함수를 만들어보는 미션은 재귀함수 이론들을때부터 "아 이건 미션으로 나오겠구나" 생각이 들었는데, 막상 미션으로 받아보니 구조는 알겠는데 쉽게 코드가 작성이 안됐다. 그래서 팩토리얼 코드를 가져와서 일단 함수명, 매개변수명을 바꾸고 조건을 미션에 맞게 변경해봤는데 코드가 작동이 안됐다. 결국 챗지피티 도움을 받아 코드를 수정했지만 초보에게는 이런 과정 (뼈대를 냅두고 살을 수정하는 과정)이 유의미했다고 생각한다. ㅎㅎㅎ
미션 해결 회고
그 외 미션들은 강의들으면서 내용을 정리했기 때문에 필요한내용만 복사해서 미션 답을 제출할 수 있었다. 굿 ~
댓글을 작성해보세요.