김진환
수강평 작성수
-
평균평점
-
블로그
전체 4![[인프런 워밍업 클럽 스터디 3기] 3주차 미션 - 자료구조와 알고리즘](https://cdn.inflearn.com/public/files/blogs/e6c38f4d-94a3-4b98-a446-a3db194d0a99/336224.png?w=260)
2025. 03. 22.
0
[인프런 워밍업 클럽 스터디 3기] 3주차 미션 - 자료구조와 알고리즘
1. 지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.퀵 정렬 - O(n log n)장점은 성능이 우수하며 정렬이 빠르다. 하지만 단점으론 이해와 구현이 어렵다.특히 퀵 정렬의 경우 병합 정렬과 달리 피벗이 배열을 반으로 가르지 않고, 한쪽에 쏠리게 되면 복잡도는 O(n^2)을 가지게 되어 정렬이 매우 느린 상황이 발생할 수 있다.병합정렬 - O(n log n)장점은 성능이 우수하며 정렬이 빠르다. 단점으론 이해와 구현이 어렵다.삽입정렬,선택정렬,버블정렬 - O(n^2)장점으론 병합, 퀵 정렬에 비해 이해와 구현이 쉽다.단점은 병합정렬과 퀵 정렬에 비해 상대적으로 느린 속도를 갖는다. 2. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다. 여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요. 타뷸레이션을 사용하는게 좋다. 메모이제이션은 기존의 재귀와 달리 계산에 사용되는 값들을 저장해 놓는 방식이다. 이 저장으로 메모리를 통해 성능을 향상시킨다. 하지만 성능을 위해 메모리를 사용해서 저장한다. 비록 분할 정복을 해결 할때 재귀가 직관적이라면 메모이제이션이 더 유리하지만 메모리가 부족한 시스템이라면 메모리도 절약하면서 속도 역시 빠른 타뷸레이션을 사용하는게 더 좋은 방법이라고 생각한다.
![[인프런 워밍업 클럽 3기 CS] 3주차 미션 - 운영체제](https://cdn.inflearn.com/public/files/blogs/3a198c81-19c1-4cde-9979-75d7b62c2510/336224.png?w=260)
2025. 03. 22.
0
[인프런 워밍업 클럽 3기 CS] 3주차 미션 - 운영체제
메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.레지스터 - cpu내에 존재하며 가장 빠른 처리속도를 갖고 있다.캐시메모리 - cpu가 미리 가져온 데이터를 저장하는 곳이다. 성능의 이유로 여러개를 두며 단계에 따라 L1,L2,L3캐시로 나뉘어져 있다주기억장치 - OS와 다른 프로세스들이 실행시 올라가는 공간이다. 실행중인 프로그램들만 올라간다.보조기억장치 - 파일 및 프로그램등이 실행되지 않을때 저장되는 공간으로, 전원이 꺼진 후에도 데이터가 남아있어 주로 보관 및 기억용으로 사용된다. 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요? 경계레지스터. CPU내에 존재하며, 메모리 관리자가 사용자 프로세스가 해당 레지스터의 값을 벗어났는지 검사한다. 메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?가변 할당은 해당 메모리에 맞게 할당되므로, 내부 단편화 등의 공간 낭비가 없다. 단점으론 한 프로세스가 분산되어 할당되므로, 메모리 공간이 남아있어도 추가적 할당을 할 수 없는 외부 단편화가 발생하게 된다.고정 할당은 구현이 간단하고 오버헤드가 적다. 단점으로는 한 프로세스보다 더 큰 메모리가 할당될 수 있으며, 이로인해 특정 메모리보다 더 큰 공간이 할당되게 되는 내부 단편화가 발생한다. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?스레싱.근본적으로 물리 메모리의 크기가 부족해서 일어나는 현상이며, SWAP시의 컨텍스트 스위칭으로 인해 발생한다. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?OS를 부팅하거나 윈도우,리눅스를 사용할 목적이라고 가정한다.HDD나 SSD외에 OS를 저장할 별도의 공간이 있다면 꼭 필요하지 않다.네트워크를 통한 부팅이나, 인터넷을 통한 원격 OS 부팅등을 사용해 부팅또한 가능하다. 따라서 HDD,SSD외에 OS가 저장되어있는 공간이 별도로 존재한다면 HDD나 SSD는 필요하지 않다. 파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?OS의 파일시스템에는 파일 관리를 위해 빈 공간을 모아둔 Free block list가 존재한다. 특정 파일이 삭제되면, 파일 시스템은 모든 정보를 지우는게 아니라 파일 테이블의 헤더를 삭제하고, 그 파일에 해당하는 블럭을 free block list에 추가한다.이렇게 되면 사용자는 파일이 지워진것 처럼 느끼게 된다. 하지만 실제 사용한 블록의 데이터는 지워지지 않고 그대로 남아 있으므로, 이후 포렌식을 통해 데이터 복구가 가능하다.
![[인프런 워밍업 클럽 스터디 3기] 2주차 미션 - 자료구조와 알고리즘](https://cdn.inflearn.com/public/files/blogs/350f680c-ff52-4e24-b34c-78ac4b7d9128/336224.png?w=260)
2025. 03. 16.
0
[인프런 워밍업 클럽 스터디 3기] 2주차 미션 - 자료구조와 알고리즘
1. 재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?무한 loof에 빠져 해당 프로세스가 종료되지 않거나, 콜스택이 가득 차서 프로세스가 강제 종료 될 때 까지 해당 루틴이 계속 실행된다. 2. 0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.function sumOdd(n){ if(n 3. 다음 코드는 매개변수로 주어진 파일 경로(.는 현재 디렉토리)에 있는 하위 모든 파일과 디렉토리를 출력하는 코드입니다. 다음 코드를 재귀 함수를 이용하는 코드로 변경해보세요. const fs = require("fs"); // 파일을 이용하는 모듈 const path = require("path"); // 폴더와 파일의 경로를 지정해주는 모듈 function traverseDirectory1(directory){ const stack = [directory]; // 순회해야 할 디렉토리를 저장할 스택 if(stack.length==0){ return; } const currentDir = stack.pop(); const files = fs.readdirSync(currentDir); for (const file of files) { const filePath = path.join(currentDir, file); const fileStatus= fs.statSync(filePath); if (fileStatus.isDirectory()) { // 해당 파일이 디렉토리라면 traverseDirectory1(currentDir); } else { console.log('파일:', filePath); } } } traverseDirectory1("."); // 현재 경로의 모든 하위 경로의 파일, 디렉토리 출력
![[인프런 워밍업 클럽 3기 CS] 2주 차 미션 - 운영체제](https://cdn.inflearn.com/public/files/blogs/040a85e2-b948-4502-af8b-13db48f3ed6a/336224.png?w=260)
2025. 03. 16.
0
[인프런 워밍업 클럽 3기 CS] 2주 차 미션 - 운영체제
1. FIFO 스케줄링의 장단점이 뭔가요?- 장점 : 구현이 간단하고 직관적이다.- 단점 : 먼저 온 프로세스가 작업시간이 긴 프로세스인 경우 나중에 도착한 작업시간이 빠른 프로세스가 기다려야 한다. 또한 작업시간이 긴 프로세스에 I/O 작업이 있을 경우 CPU가 대기 상태로 들어가 자원 활용룰이 떨어진다. 2. SJF를 사용하기 여러운 이유가 뭔가요?짧은 작업 우선 스케줄링은 작업이 빨리 끝나는 순서대로 처리하는 스케줄링이지만 도착한 프로세스가 언제 작업을 마칠지 알 수 없어 구현이 어어렵다.또한 작업이 빠른 프로세스가 지속해서 들어오게 될 경우 상대적으로 일찍 도착하였지만 작업시간이 긴 프로세스가 무한정 기다릴 수 있다. 3. RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요?라운드 로빈에서 타임 슬라이스가 매우 짧다면 프로세스가 무언가를 처리해야하는 시간보다 컨텍스트 스위칭 오버헤드가 더 크게 작동하게 된다. 4. 운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요?해당 프로세스가 CPU를 얼만큼 사용하는지를 체크한다. OS가 지정한 타임 슬라이스 만큼 프로세스를 사용한다면 이는 CPU위주의 작업임을 알 수 있고, OS가 지정한 타임 슬라이스 이전에 CPU 자원을 반환한다면 이는 타임 슬라이스 이외에 다른 작업인 I/O 작업등을 통해 반납한 것이므로 OS는 해당 프로세스가 CPU위주의 작업인지 I/O등의 작업 위주 프로세스인지 알 수 있다. 5. 공유자원이란무엇인가요?프로세스간 통신시에 공동으로 사용하는 파일이나 변수.여러 프로세스가 동시에 접근할 수 있는 자원이다. 6. 교착상태에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요?어떤 프로세스가 점유하고 있는 리소스가 다른프로세스에게 공유될때어떤 프로세스가 점유하고 있는 리소스를 다른 프로세스가 빼앗을 때어떤 프로세스가 어떤 리소스를 갖고 있는 상태에서 다른 리소스를 원하는 상태일때점유와 대기를 하는 프로세스들의 관계가 상호 순환(원형)관계를 이루고 있을때.




