블로그

하얀종이개발자

인프런 워밍업 클럽 2기 - CS 전공지식 스터디 3주차 마지막 발자국

운영체제 3주차 학습 요약 가상메모리컴퓨터의 물리적 메모리의 크기를 확장하기 위해 사용되는 기술운영체제가 각 프로세스마다 독립적인 메모리공간을 할당할 수 있게 해줌이때문에 프로그래머는 프로그램이 메모리 어디에 위치하는지 신경쓰지 않고, 0부터 시작된다고 생각하고 프로그래밍 함동적주소변환 (DAT)메모리관리자가 가상메모리의 논리주소를 물리주소로 변환하는 것을 말함세그멘테이션 분할 방식에서 논리 주소를 물리주소로 변환메모리관리자는 CPU에서 받은 논리주소를 세그멘테이션 테이블을 이용하여 물리주소를 찾음페이징 분할 방식에서 논리 주소를 물리주소로 변환메모리관리자는 CPU에서 받은 논리주소를 페이지 테이블을 이용하여 물리주소를 찾음페이지드 세그멘테이션 분할 방식에서 논리 주소를 물리주소로 변환세그멘테이션 테이블의 속성값으로 페이지 테이블의 인덱스를 추가할 수 있게하여 세그멘테이션, 페이지 테이블을 모두 이용해서 물리주소를 찾음가상메모리는 세그멘테이션으로 분할되어 있고, 물리메모리는 페이징으로 분할되어 있어 각 분할방식의 장점을 취할 수 있게 함메모리 접근권한세그멘테이션 테이블에 메모리의 특정번지에 권한을 부여하는 속성을 추가하여, 메모리 접근시 권한을 검사할 수 있음디멘드 페이징 정책조만간 필요할 것 같은 데이터를 메모리에 가져오고 쓰이지 않을 것 같은 데이터는 스왑영역으로 보내는 정책필요한 데이터를 언제 메모리로 가져올지를 결정하는 것페이지 테이블 엔트리접근비트, 변경비트, 유효비트, 권한비트 (프레임번호만 있는게 아님)페이지 폴트프로세스가 가상메모리에 접근요청했을때 물리메모리에 데이터가 없을때 발생하는 인터럽트페이지 폴트가 발생하면 보조저장장치의 스왑영역에 접근하여 스왑영역에 있는 데이터를 메모리에 올리는 작업을 함페이지 교체정책스왑영역에서 데이터를 찾아 메모리에 올리려고 했는데, 이미 메모리가 가득찼을때 조회할 데이터를 메모리에 추가하기위해 데이터를 남기거나 스왑영역으로 보내는 정책무작위, FIFO, Optimum, LRU, Clock Algorithm, Enhanced Clock Algorithm스레싱과 워킹셋스레싱제한된 물리 메모리에 프로그램을 많이 올려 스왑 영역에 데이터가 많이 저장되고 Page Fault가 자주 발생하게 되면 CPU 사용률이 떨어짐. 스케줄러에 의해 운영체제는 CPU 사용률을 올리기 위해 더 많은 프로세스를 메모리에 올리게 되고 이를 반복하게 되면 CPU 사용률이 0에 가깝게 떨어지는데 이를 스레싱이라고 함워킹셋현재 메모리에 올라온 페이지는 다시 사용할 확률이 높기에 하나의 세트로 묶어서 메모리에 올리는데 이를 워킹셋이라고 함입출력장치주변장치(I/O 디바이스, 저장장치)들은 메인보드에 있는 버스로 연결되어 있음각 하드웨어에 맞게 외부 인터페이스가 존재캐릭터 디바이스, 블록디바이스 입출력 제어기는 두 개의 채널, 시스템 버스와 입출력 버스로 구분파일과 파일시스템운영체제가 파일을 관리하기 위한 파일 관리자파일을 관리하는 하드디스크나 Flash Memory(SSD)는 블록 디바이스, 파일 시스템은 전송 단위는 블록이지만, 사용자는 바이트 단위로 파일에 접근이 가능해야 함, 파일 관리자가 이를 중간에서 관리파일의 종류순차파일구조, 직접파일구조, 인덱스파일구조디렉토리관련있는 파일을 모아둘 수 있도록 하는 장치알고리즘 & 자료구조 3주차 학습 요약 삽입 정렬 (Insertion Sort)정렬되지 않은 영역에서 데이터를 하나씩 꺼내서 정렬된 영역 내 적절한 위치에 "삽입"해서 정렬하는 알고리즘삽입하려는 데이터를 정렬된 영역의 원소를 역순으로 순회하면서 비교O(n²)장점 : 작은 데이터나 거의 정렬된 데이터에 대해 매우 효율적단점 : 속도가 느려서 대규모 데이터에 비효율적 병합 정렬 (Merge Sort)정렬하려고 하는 배열을 잘게 쪼갠다음, 순서에 맞게 재배열하는 알고리즘 (재귀)O(n log n) 장점 : 속도가 빠르며 대규모 데이터에서도 일정한 성능을 보임 단점 : 추가 메모리 공간이 필요하며, 메모리 효율이 떨어질 수 있음퀵 정렬 (Quick Sort)배열의 숫자중 하나를 피벗으로 설정하고, 피벗의 왼쪽에는 작은값, 피벗의 오른쪽에는 큰값을 정렬하는 알고리즘분할시 왼쪽과 오른쪽의 포인트가 교차하면 피벗과 오른쪽 포인트의 값과 교환하여 피벗값을 정렬해나감평균 O(n log n), 최악 O(n²) 장점 : 평균적으로 매우 빠르고, 메모리 사용이 적음 단점 : 피벗 선택에 따라 성능이 달라지며, 최악의 경우 속도가 느려질 수 있음 (그러나 최악이 되는 경우는 거의 없음)동적프로그래밍메모이제이션계산 결과를 따로 기억해서 여러 번 중복 계산하지 않도록 하는 기법하향식 계산 방식으로 활용타뷸레이션계산에 필요한 모든 값을 전부 계산 후 테이블에 저장하는 기법상향식 계산 방식으로 활용 회고스터디의 마지막 주차가 되었네요. 나름 정리도 하고 CS전공지식 스터디 내부에서 다른분들이랑 모여 발표 스터디도 하면서 열심히 학습하면서 많이 배운시간이 었던거 같아요. 특히나 알고리즘을 직접 구현해보면서 각 알고리즘의 장.단점을 외우지 않아도 조금만 생각해보면 장.단점을 도출할 수 있게 되어서 좋았어요.스터디 발표 & 정리 자료 캡쳐빠르게 끝나 아쉬움반 후련함반이 있지만, 계속 복습하고 부족한 부분 채워나가면서 열심히 해나가겠습니다.많이 배웠습니다. 즐거웠어요.

백엔드CS전공지식그림으로쉽게배우는자료구조와알고리즘그림으로쉽게배우는운영체제인프런워밍업클럽2기감자

하얀종이개발자

인프런 워밍업 클럽 2기 - CS전공지식 스터디 미션 03 입니다.

CS전공지식 미션 2운영체제메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.레지스터CPU 내부에 있는 가장 빠른 메모리로 CPU가 계산하기위해 데이터를 임시로 저장CPU가 직접 접근할 수 있으며, 64bit 32bit CPU라는 말도 CPU의 연산단위이면서 레지스터의 크기를 나타냄캐시L1, L2, L3 캐시등이 있으면 CPU와 메모리 사이의 속도차이를 줄이기 위해 임시로 데이터를 저장하는 공간메인 메모리일반적으로 RAM을 의미하며 포노이만 구조의 CPU가 연산하기위해 프로세스를 올리는 공간전원이 꺼지면 데이터도 사라지는 휘발성 메모리임보조저장장치SSD, HDD 등으로 데이터를 영구적으로 저장할 수 있음, 메모리보다 속도가 느림전원이 꺼져도 데이터가 남아있는 비휘발성 메모리임 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?경계레지스터 : CPU내부에 존재해서 맨 앞에 저장하고 있는 운영체제 영역의 최대 범위를 기록하고 있어, 침범하지 못하게 함, 만약 경계 레지스터의 값을 넘긴 프로세스가 있으면 해당 프로세스를 종료시킴메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?가변분할방식은 프로세스의 크기에 맞춰 메모리를 분할하는 방식으로 프로세스의 영역별로 메모리를 분할 할 수 있어, 메모리 접근권한이나 메모리 공유를 할 수 있음, 그러나 외부단편화가 발생하여 메모리낭비가 생길 수 있음 고정분할방식은 고정된 크기로 메모리를 분할 하는 방식으로 가변분할방식의 외부단편화를 제거할 수 있음, 그러나 고정된 크기에 프로세스를 나눠서 할당하기 때문에 내부 단편화가 발생할 수 있고, 프로세스 영역별로 나눌수 없어 메모리 접근권한이나 공유하는데 어려움이 있음CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?스레싱많은 프로그램을 메모리에 올리면 스왑이 빈번하게 일어날 수 있음이때 CPU가 실제 작업을 처리하지 못하고 스왑 작업에만 몰두하게 되어 CPU를 사용하지 못하는 현상을 말함HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?꼭 필요하지는 않음컴퓨터가 실행되기 위해서는 RAM이 필요하지만, HDD나 SSD는 데이터의 영구적 저장을 위한 보조 장치임만약 시스템이 네트워크 기반 부팅을 사용하거나 RAM 디스크를 활용하는 경우, HDD나 SSD 없이도 컴퓨터를 실행할 수 있음. 다만 RAM은 전원이 꺼지면 데이터가 모두 사라지기 때문에 일반적으로는 운영체제를 포함한 데이터를 저장하기 위해 HDD나 SSD가 필요파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?파일을 삭제하더라도 실제로 데이터는 즉시 삭제되지 않고, 파일 시스템에서 해당 파일의 참조만 제거됨실제 데이터는 디스크에 그대로 남아 있기 때문에 포렌식 도구를 이용해 복구할 수 있음.완전한 삭제를 위해서는 데이터를 덮어쓰는 과정을 거쳐야 함자료구조와 알고리즘지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.버블 정렬 (Bubble Sort)O(n²)장점 : 단순한 구조로 이해 & 구현이 쉬움, 거의 정렬된 배열에서는 빠르게 종료될 수 있음단점 : 속도가 느리고, 다른 효율적인 정렬 알고리즘에 비해 많이 사용되지 않음선택 정렬 (Selection Sort)O(n²)장점 : 메모리 사용이 적고, 단순한 구조로 이해 & 구현이 쉬움단점 : 속도가 느리고, 다른 효율적인 정렬 알고리즘에 비해 많이 사용되지 않음삽입 정렬 (Insertion Sort)O(n²)장점 : 작은 데이터나 거의 정렬된 데이터에 대해 매우 효율적단점 : 속도가 느려서 대규모 데이터에 비효율적병합 정렬 (Merge Sort)O(n log n)장점 : 속도가 빠르며 대규모 데이터에서도 일정한 성능을 보임단점 : 추가 메모리 공간이 필요하며, 메모리 효율이 떨어질 수 있음퀵 정렬 (Quick Sort)평균 O(n log n), 최악 O(n²)장점 : 평균적으로 매우 빠르고, 메모리 사용이 적음단점 : 피벗 선택에 따라 성능이 달라지며, 최악의 경우 속도가 느려질 수 있음 (그러나 최악이 되는 경우는 거의 없음)메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다. 여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.메모이제이션(Memoization)재귀를 사용하면서 이미 계산된 값을 기억하고 활용하는 방식으로, 필요할 때 계산된 값을 바로 반환해서 사용재귀 구조를 그대로 유지하면서도 중복 계산을 피할 수 있음타뷸레이션(Tabulation)문제를 하위 문제부터 점진적으로 해결하는 방식으로, 반복문을 사용해 값을 채워나가는 방식메모리 부족한 상황이라면 타뷸레이션을 사용할 것 같습니다.타뷸레이션은 스택 오버플로우 위험이 없고, 재귀 호출에 따른 추가적인 메모리 오버헤드가 발생하지 않기 때문에 메모리를 더 효율적으로 사용할 수 있습니다. 

백엔드CS전공지식그림으로쉽게배우는자료구조와알고리즘그림으로쉽게배우는운영체제인프런워밍업클럽2기감자

채널톡 아이콘