오이고기
수강평 작성수
-
평균평점
-
블로그
전체 6
2024. 10. 19.
1
인프런 워밍업 클럽 스터디 2기 CS 3주차 발자국
운영체제가상 메모리, 입출력 장치, 파일 시스템에 대해 배웠습니다. 가상 메모리에선 메모리 할당 방식인 가변 분할 방식과 고정 분할 방식을 배우며 이의 장단점을 알아보고 이 두 방식의 절충 방식도 알아보았습니다. 그리고 이 할당 방식 이후엔 가져오기 정책과 교체 정책도 살펴보았고, 이후 입출력 장치가 어떻게 데이터를 주고 받는지 알아보고 파일 시스템에서 파일 구조에 대해 알아보았습니다. 자료구조나머지 정렬인 삽입 정렬, 병합 정렬, 퀵 정렬을 배우고 동적 프로그래밍에 대해 간단히 배웠습니다. 각 정렬들의 원리와 시간 복잡들을 자세히 알아보고 재귀보다 더 성능 좋게 문제를 해결할 수도 있는 동적 프로그래밍 방법도 메모이제이션과 타뷸레이션을 알아보았습니다.

2024. 10. 19.
1
인프런 워밍업 클럽 스터디 2기 CS 3주차 미션
# 운영체제1. 메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.레지스터: 가장 빠른 메모리로 CPU 내부에 있다. 잦은 메모리 접근으로 인한 성능 감소를 줄이기 위해 사용한다.캐시: 레지스터 다음으로 빠른 메모리로 마찬가지로 잦은 메모리 접근으로 인한 성능 감소를 줄이기 위해 있다.메모리: 프로세스들이 올라가 있는 메모리이다. 레지스터, 캐시, 메모리는 모두 휘발성 메모리이다.보조기억장치: 비휘발성 메모리로, 이곳에 파일과 프로그램 등이 저장된다.레지스터 -> 캐시 -> 메모리 -> 보조기억장치이 순서에서 레지스터 쪽으로 갈 수록 가격이 비싸고 용량이 작으나 속도가 빠르다.2. 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?경계 레지스터 입니다.경계 레지스터는 프로세스가 허락되지 않은 메모리 주소에 접근을 시도할 시에 프로세스를 강제 종료 시킵니다.3. 메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?가변 분할 방식프로세스에 크기에 맞는 메모리 공간을 할당하는 방식장점: 프로세스를 메모리에 연속된 공간에 할당하여 내부 단편화가 발생하지 않는다.단점: 외부 단편화 문제가 발생한다. 고정 분할 방식프로세스 크기에 상관없이 운영체제에서 정한 크기만큼 프로세스에 공간을 할당하는 방식장점: 프로세스를 관리하기 간단해진다.단점: 내부 단편화 문제가 발생한다.4. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?스레싱메모리 부족으로 페이지 폴트가 너무 빈번하게 발생하여 대부분의 시간을 스왑을 하는데 보내는 것입니다.5. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?이유를 함께 적어주세요.꼭 필요하지는 않은 거 같습니다. HDD나 SSD는 보조 기억 장치이기 때문에 있으면 좋은 것이지, 컴퓨터를 실행할 때 필수적인 부품은 아닙니다. 컴퓨터를 실행할 때에는 CPU와 메모리만 있어도 실행이 될 거 같습니다.6. 파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?파일을 삭제할 때 그 파일의 정보를 정말 삭제하는 것이 아니라, 파일의 헤더만 삭제하고 그 파일 위치를 free block list에 추가한다. 이렇게 실제론 삭제를 하지 않고 free block list에만 추가하는 것이기에, 새로운 데이터가 덮어쓰여지지 않았으면 복구가 가능합니다.# 자료구조와 알고리즘1. 지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.버블정렬, 선택정렬, 삽입정렬세 정렬의 시간 복잡도: O(n^2)장점: 구현이 쉽고 직관적이다.단점: 성능이 그닥 좋지는 않다.병합정렬시간 복잡도: O(nlogn)장점: 큰 문제를 작은 문제로 쪼개어 해결(정렬)하는 것으로 위 세 정렬 알고리즘보다 성능이 우수합니다.단점: 정렬할 배열을 저장할 메모리가 추가로 필요합니다.퀵정렬시간 복잡도: worst-case일시 O(n^2)이지만 거의 모든 상황에서 O(nlogn)에 근접한 성능을 보이고 메모리를 더 사용하는 병합정렬보다 일반적으로 우수한 성능을 보입니다.장점: 정렬 알고리즘 중 거의 가장 우수한 성능입니다.단점: 피벗을 잘못 선택할 시 성능이 저하될 수 있습니다.2. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다. 여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.타뷸레이션을 사용할 거 같습니다. 메모이제이션은 문제를 메모리를 많이 사용하나 직관적으로 재귀를 사용할 때 사용할 거 같고 타뷸레이션은 직관적이지 않은 문제를 메모리를 적게 사용하여 해결할 때 사용하는 게 좋으니 타뷸레이션을 사용하겠습니다.

2024. 10. 11.
1
인프런 워밍업 클럽 스터디 2기 CS 2주차 발자국
운영체제운영체제에서는 남은 CPU 스케줄링 기법인 SJF, RR, MLFQ를 알아보았고 이후 프로세스 동기화에서 프로세스 간 통신, 공유 자원과 임계구역, 세마포어 등을 배웠다. 이렇게 프로세스 간 동기화를 배우고 여기서 발생하는 문제인 데드락도 알아보았고 어떤 조건이 갖춰지면 데드락이 발생하는 지 알아보았다(상호배제, 비선점, 점유와 대기, 원형 대기). 이를 통해 공유 자원 관리의 중요성을 인지하였다. 그리고 컴퓨터 메모리의 종류와 메모리를 관리하는 방법, 세그멘테이션과 페이징 기법을 알아보고 이 두 할당 방식의 절충 방법인 버디 시스템도 알아보았다. 알고리즘 알고리즘으로 제일 처음 배운 건 재귀였다. 재귀는 처음 보면 이해가 어렵기에 차근차근 알아보았다. 나도 재귀적으로 사고하는 법을 길러야겠다. 이후 재귀 알고리즘의 대표적인 예인 하노이탑을 재귀 함수를 통해 해결해보았다.재귀를 배운 이후 정렬 알고리즘으로 버블 정렬과 선택 정렬을 배웠다.둘다 시간 복잡도가 O(n^2)으로 구현이 간단하고 이해가 쉬우나 성능이 그렇게 좋진 않은 정렬 알고리즘이다.

2024. 10. 11.
1
인프런 워밍업 클럽 스터디 2기 CS 2주차 미션
**운영체제**1. FIFO 스케줄링의 장단점이 뭔가요?FIFO 알고리즘의 장점은 우선 로직이 간단하다는 겁니다. 들어온 순서대로 Job을 수행하면 됩니다.허나 단점은 정말 단순히 순서대로 작업을 수행하기 때문에 앞에 수행 시간이 엄청 오래 걸리는 Job이 있고 바로 뒤에 잠깐이면 끝나는 Job이 있어도 예외 없이 뒤의 Job은 앞의 Job의 오랜 수행 시간을 모두 기다리고 나서 수행되기 때문에 Job 입력 순서에 따라 비효율적일 수 있습니다. 2. SJF를 사용하기 여러운 이유가 뭔가요?어떤 Job이 먼저 끝날지, 즉 어떤 Job이 가장 짧을지 예측하는 것이 불가능하기 때문입니다. 우리가 컴퓨터를 사용할 때 어떤 프로세스를 이때 종료하겠다고 정해 놓고 사용하지 않습니다. 따라서 SJF은 단순히 다른 알고리즘의 성능 측정 용도로 사용됩니다.3. RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요?Round Robin 알고리즘에서 타임 슬라이스가 너무 작으면 Job을 실행하는 시간에 비해 컨택스트 스위칭을 하는 시간이 너무 많아지게 됩니다. 즉 오버헤드가 너무 커지게 됩니다. 따라서 운영체제는 사용자가 끊김을 느끼지 않을 만큼 작게 타임 슬라이스를 설정하고, 또 오버헤드가 너무 커지지 않도록 크게 타임 슬라이스를 정해서 적절한 타임 슬라이스를 정해야 합니다. (window는 20ms라고 했었나?) 4. 운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요?우선 운영체제가 프로세스를 관찰하면서 CPU를 계속 사용해서 운영체제가 CPU 사용권을 뺏어야 하는 상황이 오면 그 프로세스를 CPU Bound Process 라고 인식합니다. I/O Bound Process는 프로세스가 I/O 요청을 자주하고, CPU를 사용하다가 CPU 권한을 양보하는 경우가 잦은 경우 운영체제가 I/O Bound Process라고 판단합니다.5. 공유자원이란무엇인가요?여러 프로세스간 또는 여러 쓰레드 간 서로 공유하는 자원입니다.6. 교착상태에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요?상호배제 - 어떤 프로세스가 리소스를 점유했으면, 그 리소스는 다른 프로세스와 공유할 수 없습니다.비선점 - 프로세스가 리소스를 점유하고 있을 때, 다른 프로세스가 그 리소스를 빼앗을 수 없어야 합니다.점유와 대기 - 어떤 프로세스가 리소스를 가지고 있는 상태에서 다른 리소스를 원하는 상태여야 합니다.원형 대기 - 점유와 대기를 하고 있는 프로세스의 관계가 원형을 이루어야 합니다.이 네 가지 중 하나라도 충족하지 않을 시, 교착 상태는 발생하지 않습니다.**자료구조와 알고리즘**1. 재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?재귀 함수 탈출 조건인 기저 조건이 없으면 재귀 함수를 탈출하지 못하고 계속해서 재귀 함수를 반복 호출 할 수 있어서 stack 메모리 초과가 발생해서 프로세스가 강제 종료될 수 있습니다.2. 0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.```jsfunction sumOdd(n){if (n == 0) return; // 기저 조건if (n % 2 == 1) return n + sumOdd(n - 1); // 홀수면 + 하고 하향식 호출return sumOdd(n - 1); // 짝수면 그냥 하향식 호출만} console.log(sumOdd(10)) // 25```

2024. 10. 06.
1
인프런 워밍업 클럽 스터디 2기 CS 1주차 발자국
운영체제처음에는 운영체제의 역사부터 시작해서 어떻게 해서 운영체제가 생겨났는지 알아보았다. 그 후 간단하게 컴퓨터의 구조를 알아보고 이후 프로그램과 프로세스의 차이, 운영체제가 어떻게 PCB를 통해 프로세스를 제어하는 지를 알아보았다. 그 밖에도 프로세스의 상태, 컨택스트 스위칭을 배우고 지금은 CPU가 스케줄링을 통해서 프로세스를 제어하는 다양한 방식을 배우고 있다. 자료구조 연결리스트메모리에 연속된 공간에 할당되는 배열과 달리, 각 노드끼리 포인터를 통해 메모리에 연속되지 않는 공간에 할당하여 사용할 수 있는 자료구조이다.배열과 연결리스트의 장단점 배열 새로운 데이터 추가 및 기존 데이터 삭제에는 시간이 오래 걸리나, 데이터 참조는 빠르게 가능하다.연결리스트새로운 데이터 추가 및 기존 데이터 삭제는 빠르게 가능하나, 데이터 참조는 오래 걸린다.각 상황에 맞는 자료구조를 사용하기! 스택FILO 자료구조로 제일 처음 들어간 데이터가 가장 마지막에 나오는 자료구조다. 탑을 쌓아 저장하는 자료구조라고 보면 된다. 큐FIFO 자료구조로 제일 처음 들어간 데이터가 제일 처음에 나오는 자료구조다. 들어간 순서대로 나오는 자료구조이다. 덱스택과 큐를 합쳐 한번에 두 자료구조를 사용할 수 있는 자료구조로, 가장 먼저 넣은 데이터를 꺼낼 수도 있고, 가장 마지막에 넣은 데이터를 꺼낼 수도 있다. 해시테이블key 값과 value 값을 가지는 자료구조로, 해시 함수를 통해 데이터들을 적절히 고르게 배분하면 해시 값을 통해 보다 빠른 데이터 검색을 할 수 있다.중복된 key는 허용하지 않지만, 중복된 value는 허용한다. 셋value 값만 가지는 자료구조로, 중복을 허용하지 않는다.셋은 중복된 데이터를 제거하거나, 특정 값의 존재 여부를 빠르게 확인할 때 사용할 수 있다.

2024. 10. 03.
1
인프런 워밍업 클럽 스터디 2기 CS 1주차 미션
운영체제1. ```Cwhile(true){ wait(1); // 1초 멈춤 bool isActivated = checkSkillActivated(); // 체크 }```위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다.이 방식은 폴링방식입니다.1초마다 체크하기 때문에 성능에 좋지 않습니다.이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?정답: 인터럽트 방식을 사용하여 입력이 완료되었을 때 신호를 받습니다. 2. 프로그램과 프로세스가 어떻게 다른가요?정답: 프로그램은 저장 장치에 존재하는 실행 파일이고, 프로세스는 현재 메모리 올라가 실행 중인 프로그램을 말합니다. 3. 멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요?정답: 멀티프로그래밍은 메모리에 여러 개의 프로그램을 올려 놓는 것을 말하고, 멀티프로세싱은 그 여러 프로세스들을 돌아가며 모두 실행시키는 걸 말합니다. 4. 운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?정답: PCB(Process Control Block)를 통해 프로세스를 관리합니다. PCB는 CPU 스케줄링을 원활하게 진행할 수 있도록(멈췄다가 다시 실행할 수 있도록) 프로세스의 다양한 정보를 담고 있습니다.5. 컨텍스트 스위칭이란 뭔가요?정답: 프로세스의 CPU 사용권을 다른 프로세스로 옮기는 작업으로 현재 작업 중인 프로세스의 정보를 PCB에 저장해 보관하고 실행할 프로세스의 PCB를 가져와 그 정보를 참조하여 이어서 실행한다. 자료구조와 알고리즘1. 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다.이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요?이유를 함께 적어주세요.정답: 배열을 사용할 거 같습니다. 한번 반이 배정되면 반 학생이 추가되거나 제거되는 경우가 거의 없고 참조하는 경우가 많을 것이기에 추가 및 삭제에서는 연결 리스트보다 성능이 좋지 않지만 참조에서는 O(1)의 성능을 보이는 배열을 사용하겠습니다.2. 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.정답: Queue를 사용하겠습니다. 큐는 FIFO 자료구조로 먼저 들어온 게 먼저 나갑니다. 따라서 주문은 순서대로 처리해야하기에 FILO인 Stack보다는 Queue가 더 적절한 거 같습니다.




