인프런 워밍업 클럽 스터디 3기 - CS 전공지식 (운영체제, 자료구조, 알고리즘) 회고

인프런 워밍업 클럽 스터디 3기 - CS 전공지식 (운영체제, 자료구조, 알고리즘) 회고

알고리즘 2주차 회고

이번주 배운 알고리즘 개념은 재귀와 정렬이다.

재귀는 어떠한 것을 정의할 때 자신의 참조하는 것이다.

아래는 재귀를 위해 실습한 코드 일부...

function sumArray(arr){
    if(arr.length == 1) return arr[0];
    return sumArray(arr.slice(0, -1)) + arr[arr.length -1];
}

let arr = [1,2,3,4,5];
let sum = sumArray(arr);
console.log(sum);

재귀에서는 하노이의 탑을 이용한 방식이 있는데, 값을 이동시킬 때 사용할 수 있는 개념이라고 생각했다.

예를 들면 int a=5이고 int b=4일때, a와 b의 값을 서로 바꾸는 경우 temp라는 값을 두고 바꾸는 것도 하노이의 탑과 유사할 것이다.

버블정렬은 앞의 숫자와 옆의 숫자를 비교해서 자리를 바꾸는 것인데, 반복할 수록 비교할 횟수가 줄어들긴 하지만 성능이 O(n제곱)이라 좋지 않다.

선택정렬은 배열의 첫번째부터 마지막까지 비교를 하면서 정렬하는데 버블정렬과 동일하게 구현은 쉽지만 성능이 O(n제곱)으로 좋지않다.


운영체제 2주차 회고

스케줄링 개념을 집중해서 익혔다. 그리고 데드락에 대한 수업을 듣고 교착상태 해결방법에 대해 배울 수 있어서 유익했다.

하지만 실제 상황에서 교착상태 문제 해결을 위한 능력을 갖추려면 더 공부가 필요...ㅜㅜ

  • CPU스케줄링: 운영체제에서 프로세스들에게 CPU를 할당하고 해제하는 것

  • 프로세스 상태

    image

  • 스케줄링의 목표: 리소스 사용률, 오버헤드 최소화, 공평성, 처리량, 대기시간, 응답시간

     

    -> 모든 것을 완벽하게 고려하기는 어렵기 때문에 밸런스 유지가 중요하다.

  • 종류: FIFO(순서대로 진행), SJF(짧은작업 먼저 진행), RR(정해진시간을 두고 순서대로 진행), MLFQ(가장 일반적으로 쓰이며 타임슬라이스를 이용해서 우선순위를 따져 진행)


  • 데드락(교착상태): 여러 프로세스가 서로 다른 프로세스 작업이 끝나기를 기다리거나 아무 프로세스도 작업을 시작하지 못한 상태

    image

  • 교착상태는 상호배제와 비선점, 점유와 대기, 원형대기가 필요조건이다.

  • 교착상태 해결을 위해서는 교착상태 회피와 교착상태 검출이 사용될 수 있다.

 

 

 

 

댓글을 작성해보세요.

채널톡 아이콘