블로그
전체 62024. 10. 20.
1
[인프런 워밍업 클럽 2기 CS] 3주차 발자국
운영체제세그멘테이션(배치정책)메모리를 논리적 단위(세그먼트)로 분할각 세그먼트는 다양한 크기 가능외부 단편화 문제 발생 가능페이징(배치정책)메모리를 동일한 크기의 페이지로 분할물리 메모리와 가상 메모리 간 매핑내부 단편화 발생 가능, 외부 단편화 해결페이지드 세그멘테이션(배치정책)세그멘테이션과 페이징 결합세그먼트를 페이지 단위로 나눔유연성과 효율성 향상디맨드 페이징(가져오기 정책)필요한 페이지만 메모리에 로드페이지 부재 시 디스크에서 가져옴메모리 사용 효율성 증가페이지 교체정책FIFO, LRU, LFU 등 다양한 알고리즘새 페이지 로드 시 어떤 페이지를 교체할지 결정페이지 부재율 최소화 목표스레싱과 워킹셋스레싱: 과도한 페이지 교체로 성능 저하워킹셋: 프로세스가 자주 참조하는 페이지 집합워킹셋 관리로 스레싱 방지주변장치(I/O 디바이스, 저장장치)CPU, 메모리 외 하드웨어 장치입력, 출력, 저장 기능 수행인터럽트 기반 동작마우스/키보드사용자 입력 장치이벤트 기반 동작인터럽트 처리 필요하드디스크/Flash Memory(SSD)하드디스크: 기계식, 대용량, 저렴SSD: 전자식, 고속, 고가비휘발성 저장 장치파일과 파일시스템파일: 관련 데이터의 논리적 집합파일시스템: 파일 저장, 조직, 검색 관리메타데이터 관리 포함디렉토리파일들의 논리적 컨테이너계층적 구조 (트리 구조)파일 검색, 그룹화 용이파일과 디스크파일 할당 방식: 연속, 연결, 인덱스 할당빈 공간 관리디스크 스케줄링 알고리즘 자료구조와 알고리즘정렬 - 삽입정렬원리: 정렬된 부분에 새 원소를 적절한 위치에 삽입시간 복잡도: 평균 및 최악 O(n^2), 최선 O(n)특징: 작은 데이터셋에 효율적, 부분 정렬된 배열에 유리안정적 정렬 알고리즘정렬 - 병합정렬원리: 분할 정복 방식, 작은 부분으로 나누고 병합하며 정렬시간 복잡도: 항상 O(n log n)특징: 대규모 데이터 정렬에 효율적, 추가 메모리 필요안정적 정렬 알고리즘정렬 - 퀵정렬원리: 피벗 선택 후 분할 정복 방식으로 정렬시간 복잡도: 평균 O(n log n), 최악 O(n^2)특징: 실제 구현에서 매우 빠름, 불안정 정렬피벗 선택 방법이 성능에 큰 영향동적 프로그래밍 - 메모이제이션원리: 계산 결과를 저장하고 재사용 (캐싱)특징: 주로 하향식(top-down) 접근법장점: 중복 계산 방지로 효율성 향상적용: 피보나치 수열, 최장 공통 부분 수열 등동적 프로그래밍 - 타뷸레이션원리: 작은 부분 문제부터 해결하며 표를 채움특징: 상향식(bottom-up) 접근법장점: 일반적으로 메모리 사용량이 적음적용: 냅색 문제, 최단 경로 문제 등3주차 후기지난 주차보다는 익숙한 단어들이 많이 보였다. 그래서 조금 가벼운 마음으로 시작했다가 어김없이 혼돈으로 접어드는 루트의 반복이었던 주였다. 언제쯤 이 단어와 개념과 친구 먹을 수 있을까 😂운영체제에서는 가상 메모리에 대해 배우면서 세그멘테이션과 페이징의 개념을 잡고, 메모리 관리 기법의 발전 과정을 따라 공부해 보았다. 입출력 장치와 파일 시스템에 대해 공부하면서는 하드웨어와 소프트웨어의 상호작용을 중점으로 공부했는데, SSD와 하드디스크에 대한 내용을 공부할 때는 노트북 살 때의 경험을 떠올리면서 들으니 다른 파트보다 조금 더 재밌게 들을 수 있었던 것 같다.알고리즘에서는 다양한 정렬 방법들과 동적 프로그래밍에 대해 배웠다. 정렬에 대해 공부할 때는 각각의 장단점을 비교하면서 언제 적합하게 사용할 수 있을지를 주요 포인트로 공부했다. 이미 이전에도 몇 번 봤던 개념이라 막 어렵다는 느낌은 없었다. 그런데 동적 프로그래밍이 개인적으로 좀 어려웠던 것 같다. 동적인건 언제나 어렵다, 다 정적이었으면 좋겠다 라고 궁시렁 거리면서 공부했다. 그래도 감자쌤과 함께 찬찬히 공부하니 완벽하게는 아니어도 어렴풋이 개념은 잡을 수 있었던 것 같다. 인프런 워밍업 클럽 2기 후기한 번도 공부해보지 않은 CS를 공부해보겠다고 시작한 워밍업 클럽은 생각보다 빠르게 지나갔다. 회사 일이랑 이직 준비랑 다른 스터디에 엄청 치이면서도 워밍업 클럽을 포기하지 않은 건, 하루에 수행할 수 있는 적합한 학습량과 감자쌤의 친절나긋한 설명 덕분이 아닐까 싶다. 그리고 워밍업 클럽을 같이 진행하면서 열심히 하시는 다른 분들의 모습에도 많은 자극을 받았던 것 같다. 3주 동안 감자쌤과 함께 배운 내용들을 완벽하게 이해했다고 할 수는 없지만, 전반적인 내용을 파악했고 어느 부분이 어려운지도 알았으니 앞으로 공부하면서 부족한 부분들을 더 채워나가야겠다.
알고리즘 · 자료구조
・
인프런
・
인프런워밍업클립
・
CS
・
운영체제
・
자료구조
・
알고리즘
・
감자
・
3주차
2024. 10. 20.
1
[인프런 워밍업 클럽 2기 CS] 3주차 미션
운영체제1. 메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.RAM: 빠른 읽기/쓰기가 가능하지만, 전원이 꺼지면 내용이 사라집니다.ROM: 읽기 전용이며, 내용이 영구적으로 보존됩니다.캐시: CPU와 가까이 있어 매우 빠르지만, 비용이 높습니다.가상 메모리: 하드디스크 일부를 RAM처럼 사용합니다. 속도는 느리지만 큰 용량을 사용할 수 있습니다.2. 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?경계 레지스터(Boundary Register)입니다. 이것이 없으면 프로그램들이 운영체제 영역을 무단으로 접근할 수 있어 문제가 생길 수 있습니다.3. 메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?고정 분할: 설정과 관리가 쉽습니다. 하지만 메모리 낭비가 심할 수 있습니다.가변 분할: 메모리를 효율적으로 사용할 수 있습니다. 다만 관리가 조금 복잡할 수 있습니다.4. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?스래싱(Thrashing)이라고 합니다. 시스템이 너무 바빠서 정작 실제 작업은 못 하는 상황을 말합니다.5. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요? 이유를 함께 적어주세요.네, 필요합니다. 전원이 꺼져도 데이터를 유지해야 하기 때문입니다. 하지만 RAM만으로 운영되는 특수한 시스템도 있긴 합니다. 이를 "RAM 디스크" 또는 "메모리 전용 시스템"이라고 부릅니다. 주로 아주 빠른 처리 속도가 필요하거나, 데이터의 영구 저장이 필요 없는 특수한 경우에 사용됩니다.6. 파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?파일을 삭제해도 실제 데이터는 지워지지 않고, 그 공간을 재사용 가능하다고 표시만 합니다. 그래서 덮어쓰기 전이라면 복구가 가능합니다.자료구조와 알고리즘1. 지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.버블 정렬: 구현이 쉽지만, 속도가 느립니다 (O(n^2))선택 정렬: 구현이 쉽지만, 역시 속도가 느립니다 (O(n^2))삽입 정렬: 작은 데이터에 효과적이며, 평균/최악의 경우 O(n^2)입니다병합 정렬: 안정적이고 항상 O(n log n)의 성능을 보이지만, 추가 메모리가 필요합니다퀵 정렬: 평균적으로 빠르며 O(n log n), 최악의 경우 O(n^2)의 성능을 보입니다2. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다. 여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.타뷸레이션을 사용하는 것이 좋습니다. 메모이제이션은 재귀 호출을 많이 하기 때문에 스택 오버플로우가 발생할 수 있어요. 반면 타뷸레이션은 반복문으로 해결하기 때문에 메모리를 덜 사용합니다.
알고리즘 · 자료구조
・
인프런
・
인프런워밍업클럽
・
CS
・
운영체제
・
자료구조
・
알고리즘
・
감자
・
3주차
2024. 10. 13.
1
[인프런 워밍업 클럽 2기 CS] 2주차 발자국
운영체제SJF (Shortest Job First)가장 짧은 실행 시간을 가진 작업을 먼저 처리하는 스케줄링 알고리즘평균 대기 시간을 최소화하는 효과가 있지만, 실행 시간을 정확히 예측하기 어려워 사용에 제한이 있음RR (Round Robin)각 프로세스에 고정된 시간 할당량(타임 슬라이스)을 부여하여 순환 방식으로 CPU를 할당하는 알고리즘공정성을 보장하지만, 타임 슬라이스 설정이 성능에 큰 영향을 미침MLFQ (Multi-Level Feedback Queue)다중 우선순위 큐를 사용하여 프로세스의 특성에 따라 동적으로 우선순위를 조정하는 스케줄링 알고리즘CPU Bound 프로세스는 장시간 CPU를 점유하여 우선순위가 낮은 큐로 이동I/O Bound 프로세스는 자주 I/O 작업을 수행하여 높은 우선순위 큐로 유지프로세스 간 통신 (Inter-Process Communication, IPC)프로세스들이 데이터를 교환하거나 동기화하기 위해 사용하는 메커니즘주요 방법: 파이프, 메시지 큐, 공유 메모리, 소켓효율적인 통신을 위해 다양한 기술이 사용됨공유 자원과 임계 구역 (Critical Section)여러 프로세스나 스레드가 동시에 접근할 수 있는 자원을 사용할 때 발생할 수 있는 문제를 방지자원 접근을 제한하는 코드 블록을 임계 구역이라고 함임계 구역을 효과적으로 관리하는 것이 중요함세마포어 (Semaphore)임계 구역을 제어하기 위한 동기화 도구로, 자원의 사용 가능 수를 추적하는 카운터 사용P (wait) 연산: 자원을 요청하고, 사용 가능할 때까지 대기V (signal) 연산: 자원을 해제하고, 대기 중인 프로세스에게 자원을 양도이를 통해 동시 접근 문제를 해결모니터 (Monitor)고수준의 동기화 메커니즘데이터 구조와 관련 연산을 하나의 단위로 묶어 상호 배제를 보장세마포어보다 구조화된 접근을 제공하여 동시성 문제를 쉽게 관리데드락이란? (feat. 식사하는 철학자)두 개 이상의 프로세스가 서로가 점유하고 있는 자원을 기다리며 무한히 대기하는 상태식사하는 철학자 문제는 이를 설명하는 대표적인 예제로, 철학자들이 포크를 공유하며 식사할 때 발생할 수 있는 교착상태를 보여줌데드락 해결 (feat. 은행원 알고리즘)교착상태를 방지하거나 해결하기 위한 방법 중 하나로 은행원 알고리즘을 사용시스템이 안전 상태(safe state)를 유지하도록 자원 할당을 사전에 검증하여 교착상태를 예방안전 상태란 모든 프로세스가 요청을 완료할 수 있는 상태를 의미함메모리 종류주기억장치(RAM): 휘발성 메모리로 프로그램 실행 중 데이터를 저장보조기억장치(HDD, SSD): 비휘발성 메모리로 영구적으로 데이터를 저장캐시 메모리: CPU와 주기억장치 간의 속도 차이를 줄이기 위해 사용되는 고속 메모리메모리와 주소메모리는 고유한 주소(address)를 통해 접근각 메모리 셀은 고유한 주소를 가지며, 프로그램은 이 주소를 사용하여 데이터를 읽거나 씀주소 체계는 메모리 관리와 프로세스 간의 통신에 중요한 역할을 함메모리 할당 방식정적 할당: 컴파일 시 메모리 크기가 결정되며, 프로그램 실행 중 변경되지 않음동적 할당: 프로그램 실행 중에 메모리를 할당하고 해제할 수 있음자료구조와 알고리즘재귀 (Recursion)함수가 자기 자신을 호출하여 문제를 해결하는 프로그래밍 기법문제를 더 작은 하위 문제로 분할하여 해결기저 조건을 정의하여 재귀 호출을 종료재귀적으로 생각하기문제를 자기 자신과 유사한 더 작은 문제로 분해하여 해결하는 접근 방식특히 데이터 구조의 트리 구조나 분할 정복 알고리즘에서 유용함재귀 - 하노이 탑 (Tower of Hanoi)재귀적 접근을 통해 해결할 수 있는 고전적인 문제n개의 원반을 시작 기둥에서 목표 기둥으로 옮기는 과정에서 재귀 호출을 이용하여 효율적으로 문제를 해결정렬 - 버블정렬 (Bubble Sort)인접한 요소를 비교하여 필요에 따라 교환하면서 리스트를 정렬하는 단순한 정렬 알고리즘구현이 쉽지만 시간 복잡도가 O(n²)으로 비효율적임정렬 - 선택정렬 (Selection Sort)리스트에서 가장 작은(또는 큰) 요소를 찾아 현재 위치에 교환하는 방식으로 정렬하는 알고리즘시간 복잡도는 O(n²)이며, 데이터 이동이 적은 편이지만 안정적이지 않음2주차 후기운영체제에서 처음 접하는 단어들이 난무하는 2주차였다. 잠시 정신이 혼미할 뻔 했지만 😵💫 내용을 차근히 따라가면서 조금씩 이해해 나갈 수 있었던 것 같다. 특히 개념 - 개념과 관련된 문제와 그 원인 - 해결의 관점에서 접근하니 나름 재밌게 공부했던 것 같다.알고리즘은 말은 많이 들어봤지만 실제로 잘 써본 경험은 없는 개념들에 대해 공부했다. 실제로 구현도 해 보면서 진행하니 이해하는 데 많은 도움이 되었다.이번 주는 '프론트엔드 개발자로 일을 할 때 이런 개념들까지도 알아야하나?'라는 생각이 들었던 것 같다. 뭔가 프론트보다는 서버에서 더 많이 접할 것 같은 느낌? 그래도 알아두면 나중에 도움이 될 테니 이해를 잘 해둬야겠다는 생각을 했다.
알고리즘 · 자료구조
・
인프런
・
인프런워밍업클럽
・
CS
・
운영체제
・
자료구조
・
알고리즘
・
감자
・
2주차
2024. 10. 13.
1
[인프런 워밍업 클럽 2기 CS] 2주차 미션
운영체제 (Operating Systems)1. FIFO 스케줄링의 장단점FIFO (First-In, First-Out) 스케줄링은 먼저 도착한 프로세스를 먼저 실행하는 방식입니다.장점:단순함: 구현이 매우 간단하고 이해하기 쉽습니다.공정성: 모든 프로세스가 도착한 순서대로 처리되어 순서에 대한 공정성을 보장합니다.단점:긴 대기 시간: 긴 실행 시간을 가진 프로세스가 먼저 도착하면, 뒤에 있는 짧은 프로세스들이 오랜 시간 대기해야 합니다.비효율성: 응답 시간이 중요한 시스템에서는 비효율적일 수 있습니다.2. SJF 사용의 어려움SJF (Shortest Job First)는 실행 시간이 가장 짧은 작업을 먼저 처리하는 스케줄링 알고리즘입니다.사용하기 어려운 이유:실행 시간 예측의 어려움: 실제 환경에서는 프로세스의 정확한 실행 시간을 사전에 알기 어렵습니다.스타베이션 문제: 긴 작업이 지속적으로 도착할 경우, 긴 작업들이 계속 뒤로 밀려 무기한 대기할 수 있습니다.동적 변화 대응의 어려움: 시스템 부하나 프로세스 특성이 변할 때 유연하게 대응하기 어렵습니다.3. RR 스케줄링에서 타임 슬라이스가 너무 작을 때 발생하는 문제RR (Round Robin) 스케줄링은 각 프로세스에 고정된 시간 할당량을 부여하여 순환 방식으로 CPU를 할당하는 알고리즘입니다.문제점:오버헤드 증가: 프로세스 간의 컨텍스트 스위칭이 빈번하게 발생하여 시스템 오버헤드가 증가합니다.실행 시간 비효율성: 짧은 타임 슬라이스로 인해 많은 스위칭이 필요하게 되어 실제 작업에 소요되는 시간이 늘어날 수 있습니다.캐시 효율 저하: 잦은 컨텍스트 스위칭으로 인해 캐시 히트율이 떨어지고, 캐시 미스가 증가할 수 있습니다.4. MLFQ에서 CPU Bound Process와 I/O Bound Process 구분 방법MLFQ (Multi-Level Feedback Queue)는 여러 개의 우선순위 큐를 사용하여 프로세스의 특성에 따라 동적으로 우선순위를 조정하는 스케줄링 알고리즘입니다.CPU Bound Process: 주로 CPU를 많이 사용하는 프로세스로, MLFQ에서는 장시간 CPU를 점유하는 경향이 있어 우선순위가 낮은 큐로 이동할 수 있습니다.I/O Bound Process: 자주 I/O 작업을 수행하고 CPU 사용 시간이 짧은 프로세스로, I/O 요청 시 우선순위가 상승하여 높은 우선순위 큐로 이동합니다.운영체제는 프로세스의 CPU 사용 패턴과 I/O 활동을 모니터링하여, 각 프로세스가 CPU Bound인지 I/O Bound인지를 판단하고 적절한 우선순위를 할당합니다.5. 공유 자원이란?공유 자원 (Shared Resource)은 여러 프로세스나 스레드가 동시에 접근하여 사용할 수 있는 자원을 말합니다. 예를 들어, 파일, 데이터베이스, 프린터, 메모리 공간 등이 있습니다.특징:동시 접근 가능성: 여러 프로세스가 동시에 접근할 수 있어 효율적인 자원 활용이 가능합니다.경합 상태: 동시에 접근하면 상호 배제(Mutual Exclusion)나 일관성 유지 문제 등이 발생할 수 있습니다.동기화 필요성: 공유 자원에 대한 올바른 접근을 보장하기 위해 동기화 메커니즘(예: 세마포어, 뮤텍스)을 사용해야 합니다.6. 교착상태 발생 조건교착상태 (Deadlock)는 두 개 이상의 프로세스가 서로가 점유하고 있는 자원을 기다리며 무한히 대기하는 상태를 말합니다. 교착상태가 발생하기 위해서는 다음 네 가지 조건이 모두 충족되어야 합니다:상호 배제 (Mutual Exclusion): 자원은 동시에 하나의 프로세스만 사용 가능해야 합니다.점유와 대기 (Hold and Wait): 한 프로세스가 자원을 점유하면서 추가적인 자원을 기다려야 합니다.비선점 (No Preemption): 이미 할당된 자원을 선점할 수 없어야 합니다.순환 대기 (Circular Wait): 프로세스들이 자원에 대해 순환적으로 대기하는 선형 경로가 존재해야 합니다.이 조건들을 모두 만족하면 교착상태가 발생할 수 있으므로, 이를 방지하거나 해결하기 위해서는 이 조건들 중 하나 이상을 위반해야 합니다.자료구조와 알고리즘 (Data Structures and Algorithms)1. 재귀함수에서 기저조건 미설정 시 발생 문제재귀 함수 (Recursive Function)에서 기저 조건 (Base Case)은 재귀 호출을 종료시키는 조건입니다. 기저 조건을 만들지 않거나 잘못 설정하면 다음과 같은 문제가 발생할 수 있습니다:무한 재귀 호출 (Infinite Recursion): 기저 조건이 없으면 함수가 자기 자신을 계속해서 호출하게 되어 종료되지 않고 무한히 실행됩니다.스택 오버플로우 (Stack Overflow): 재귀 호출이 계속해서 쌓이면서 호출 스택이 가득 차게 되어 프로그램이 충돌하거나 비정상 종료될 수 있습니다.논리적 오류: 기저 조건이 잘못 설정되면 함수가 의도한 대로 동작하지 않아 잘못된 결과를 반환할 수 있습니다.따라서 재귀함수를 구현할 때는 적절한 기저 조건을 설정하여 재귀 호출이 올바르게 종료되도록 해야 합니다.2. 0부터 입력 n까지 홀수의 합을 더하는 재귀 함수 구현function sumOdd(n) { // 기저 조건: n이 0보다 작거나 같을 때 if (n 기저 조건: n이 0보다 작거나 같을 때 0을 반환하여 재귀 호출을 종료합니다.홀수 처리: n이 홀수인 경우, n을 더하고 n - 1을 인자로 재귀 호출합니다.짝수 처리: n이 짝수인 경우, n을 더하지 않고 n - 1을 인자로 재귀 호출합니다.예제 실행:sumOdd(10)은 1 + 3 + 5 + 7 + 9 = 25를 반환합니다.sumOdd(15)는 1 + 3 + 5 + 7 + 9 + 11 + 13 + 15 = 64를 반환합니다.
알고리즘 · 자료구조
・
인프런
・
인프런워밍업클럽
・
CS
・
운영체제
・
자료구조
・
알고리즘
・
감자
・
2주차
2024. 10. 06.
1
[인프런 워밍업 클럽 2기 CS] 1주차 발자국
자료구조와 알고리즘시간복잡도: 알고리즘의 실행 시간을 입력 크기의 함수로 표현한 것자바스크립트 실행 환경 구축: Node.js나 브라우저를 사용해 JS 코드를 실행할 수 있는 환경 설정배열: 연속된 메모리 공간에 동일한 타입의 데이터를 저장하는 자료구조연결리스트 개념: 노드들이 데이터와 다음 노드의 참조를 가지고 연결된 선형 자료구조연결리스트 구현: 노드 클래스와 리스트 클래스를 정의하여 삽입, 삭제, 탐색 기능 구현스택 개념: LIFO(Last In First Out) 원칙을 따르는 선형 자료구조스택 구현: 배열이나 연결리스트를 사용해 push, pop 등의 연산 구현큐 개념: FIFO(First In First Out) 원칙을 따르는 선형 자료구조큐 구현: 배열이나 연결리스트를 사용해 enqueue, dequeue 등의 연산 구현덱 개념과 구현: 양쪽 끝에서 삽입과 삭제가 가능한 자료구조로, 배열이나 이중 연결리스트로 구현해시테이블 개념: 키를 값에 매핑하는 자료구조로, 빠른 검색을 위해 해시 함수 사용셋 개념과 구현: 중복을 허용하지 않는 컬렉션으로, 해시테이블을 기반으로 구현 가능운영체제운영체제 개요: 하드웨어와 사용자 간의 중개자 역할을 하는 시스템 소프트웨어운영체제의 역사: 일괄 처리 시스템부터 현대의 다중 사용자 시스템까지의 발전 과정운영체제의 구조: 커널, 시스템 콜, 사용자 인터페이스 등으로 구성된 계층적 구조컴퓨터 하드웨어와 구조: CPU, 메모리, 저장장치, 입출력 장치 등의 기본 구성요소컴퓨터의 부팅 과정: BIOS/UEFI 실행부터 운영체제 로딩까지의 단계적 과정인터럽트: 외부 이벤트나 예외 상황을 CPU에 알리는 메커니즘프로그램과 프로세스: 프로그램은 정적인 코드, 프로세스는 실행 중인 프로그램의 인스턴스멀티프로그래밍과 멀티프로세싱: 여러 프로그램의 동시 실행과 여러 프로세서를 사용한 병렬 처리PCB: 프로세스의 상태 정보를 저장하는 데이터 구조프로세스 상태: 생성, 준비, 실행, 대기, 종료 등의 프로세스 생명주기컨텍스트 스위칭: 실행 중인 프로세스를 전환하는 과정프로세스 생성과 종료: fork(), exec() 등의 시스템 콜을 통한 프로세스 관리쓰레드: 프로세스 내에서 실행되는 더 작은 실행 단위CPU 스케줄링 개요: 프로세스들 간에 CPU 시간을 할당하는 방법다중큐: 우선순위나 특성에 따라 프로세스를 여러 큐로 관리하는 스케줄링 기법스케줄링 목표: CPU 사용률 최대화, 처리량 증가, 대기 시간 최소화 등FIFO: 가장 단순한 스케줄링 알고리즘으로, 먼저 도착한 프로세스를 먼저 실행1주차 후기국비지원 교육을 듣고 취업을 하면서 CS 공부를 해 본 적이 없다보니 이름만 들어보고 개념을 모르는 내용들이 많아 학습에 대한 필요성을 느꼈는데, 때마침 인프런에서 워밍업 클럽으로 CS 코스가 열려서 신청하게 되었다.쉽게 풀어서 설명해주시는 감자 코치님의 강의 영상 따라 가다보니 기본적인 내용을 이해하는 데 큰 어려움은 없었던 것 같다.코치님 왈, 잘 모르겠으면 그림을 그려가면서 이해하라고 했는데 앞으로는 그림 그려가면서 이해해보는 것도 좋을 것 같다.미션은 강의에서 들은 내용과 추가적으로 궁금해서 찾아보았던 내용을 토대로 해결할 수 있었다.이번주는 좀 바쁘게 몰아서 들은 감이 있는데, 다음주는 차근차근 추가적인 내용도 찾아가며 강의를 듣고 싶다.
알고리즘 · 자료구조
・
인프런
・
인프런워밍업클럽
・
CS
・
운영체제
・
자료구조
・
알고리즘
・
감자
・
1주차
2024. 10. 06.
1
[인프런 워밍업 클럽 2기 CS] 1주차 미션
운영체제 1.while(true){ wait(1); // 1초 멈춤 bool isActivated = checkSkillActivated(); // 체크 }위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?이러한 경우에는 인터럽트 방식을 사용하는 것이 적합합니다. 스킬이 활성화될 때만 시스템에 알림이 가므로, 지속적인 폴링 없이 효율적으로 이벤트를 처리할 수 있습니다. 2. 프로그램과 프로세스가 어떻게 다른가요?프로그램 : 실행 가능한 코드가 저장된 정적인 파일프로세스 : 실행 중인 프로그램의 인스턴스. 메모리에 로드되어 실행되는 동적인 개체 3. 멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요?멀티프로그래밍 : 단일 CPU에서 여러 프로그램을 번갈아 실행하여 CPU 사용률을 높이는 기법멀티프로세싱 : 여러 CPU나 코어를 사용하여 실제로 여러 작업을 동시에 처리하는 기법 4. 운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?운영체제는 프로세스 제어 블록(Process Control Block, PCB)을 사용하여 프로세스를 관리합니다. PCB는 프로세스의 상태, 프로그램 카운터, 레지스터 등의 정보를 포함합니다. 5. 컨텍스트 스위칭이란 뭔가요?컨텍스트 스위칭은 현재 실행 중인 프로세스의 상태를 저장하고, 다음에 실행할 프로세스의 상태를 복원하는 과정입니다. 이를 통해 여러 프로세스를 번갈아 실행할 수 있습니다. 자료구조와 알고리즘1. 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다. 이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요? 이유를 함께 적어주세요.해시 테이블 사용이 적합합니다.빠른 검색 속도: 학생 ID나 이름으로 O(1) 시간 복잡도로 정보 검색 가능효율적인 삽입과 삭제: 새로운 학생 추가나 졸업생 삭제도 O(1) 시간 복잡도로 가능유연성: 학생별로 다양한 정보를 키-값 쌍으로 저장 2. 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.큐(Queue) 자료구조를 선택하는 것이 적합합니다.FIFO(First-In-First-Out) 원칙: 큐는 먼저 들어온 주문이 먼저 처리되는 FIFO 방식을 자연스럽게 구현간단한 구조: 간단한 주문 추가(enqueue)와 처리(dequeue) 연산공정성: 모든 주문이 들어온 순서대로 처리효율성: O(1) 시간 복잡도를 가지는 주문 추가와 처리 과정
알고리즘 · 자료구조
・
인프런
・
인프런워밍업클럽
・
CS
・
운영체제
・
자료구조
・
알고리즘
・
감자
・
1주차