[발자국] 인프런 워밍업클럽 CS 2기 2주차 발자국
학습 했던 내용 요약
자료구조 및 알고리즘
재귀 : 자기 자신을 참조하는 것, 탈출 조건 필수! (하노이탑)
버블 정렬 : 앞에 있는 숫자와 옆에 있는 숫자를 비교해서 자리를 바꾸는 알고리즘.
구현하기 쉽지만 성능O(n²)은 좋지 않음.
선택 정렬 : 배열에 정렬되지 않은 영역에서 가장 작은 원소를 가장 첫번째로 가져온다. 완료된 영역은 더이상 참조하지않고, 정렬되지 않은 영역만 이 과정을 반복해 정렬하는 알고리즘.
이해와 구현이 간단하지만, 성능O(n²)은 좋지 않음.
운영체제
프로그램을 실행시키면 메모리에 프로세스가 생성되고 각 프로세스에는 1개 이상의 스레드가 있다.
운영체제는 모든 프로세스에게 CPU를 할당, 해제하는데 이를 CPU 스케줄링이라 한다.
스케줄링 알고리즘에는 FIFO,SJF,RR, MLFQ 가 있다.
FIFO (First In First Out) : 스케줄링 큐에 먼저 들어온 순서대로 CPU를 할당하는 방식이다.
SJF (Shortest Job First) : Burst Time(작업시간)이 짧은 프로세스 먼저 실행되는 방식이다.
RR (Round Robin) : 한 프로세스에게 일정 시간만큼 CPU를 할당하고, 할당 시간이 지나면 강제로 다른 프로세스에게 CPU 가 할당된다.
강제로 CPU를 뺏긴 프로세스는 큐의 가장 뒷부분으로 밀려나는 방식이다.
MLFQ (Multi Level Feedback Queue) : 기본적으로 작은 크기의 타임 슬라이스를 선택하고, CPU 스케줄러에 의해 CPU가 뺏긴 상황이라면 , CPU Bound Process일 확률이 높으니 더 큰 타임 슬라이스를 할당 해주는 방식이다.
공유된 자원에서 동기화 문제가 발생했고,
이를 해결하기 위한 방법인 세마포어와 모니터방식이 있다.
공유자원 : 프로세스 간 통신을 할 때 공동으로 이용하는 변수나 파일
1. 세마포어 : 운영체제가 가지고 있는 열쇠로, 공유자원을 한 프로세스만 이용하게끔 관리
2. 모니터 방식 : 따로 운영체제가 처리하는 것이 아니라, 프로그래밍 언어 차원에서 지원하는 것.
동기화 문제를 해결하기 위해 공유된 자원을 한 프로세스가 점유하게 만들었는데 교착상태(데드락) 발생
교착상태 (데드락) : 여러 프로세스가 서로 다른 프로세스의 작업이 끝나기를 기다리다가 작업을 진행하지 못하는 상태
교착상태가 발생하는 원인 : 공유자원
해결방법 :
1. 가벼운 교착 상태 검출: 타이머 사용
체크포인트를 만들어 저장하고, 타임 아웃시 마지막에 저장된 체크 포인트로 롤백
2. 무거운 교착 상태 검출: 자원 할당 그래프 이용
현재 운영체제에서 프로세스가 어떤 자원을 사용하는지 지켜보다가, 교착상태가 발생 시 해결
순환 구조가 생긴 그래프를 통해 확인하고,
교착 상태를 일으킨 프로세스를 강제 종료시킨다.
회고
일주일 동안 스스로 칭찬하고 싶은 점
일중일치 진도대로 인강을 다 수강하고, 미션과 발자국도 기한내에 진행한 점.
(인강을 수강하면서 정리한 내용)복습을 함께 진행한 점
아쉬웠던 점
토요일까지로 미션과 발자국을 미리 완수하고 싶었는데, 그렇지 못한 점.
보완하고 싶은 점
이해가 어려웠던 부분들은 더 찾아보면서 이해해보기
다음주 학습 목표
미션과 발자국을 마감기한보다 하루 일찍 완수하기
출처 : 그림으로 쉽게 배우는 운영체제 - 감자 , 그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)- 감자
댓글을 작성해보세요.