![[인프런 워밍업 클럽 3기] CS - 3주차 미션 (운영체제)](https://cdn.inflearn.com/public/files/blogs/2564b8c0-c352-427d-8cf5-8b829163d3c5/인프런 3기.jpeg)
[인프런 워밍업 클럽 3기] CS - 3주차 미션 (운영체제)
메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.
레지스터
가장 빠른 기억장소로 CPU 내에 존재
컴퓨터의 전원이 꺼지면 데이터가 사리지므로, 휘발성 메모리에 해당
메인메모리 RAM
레지스터에 비하면 한참 느린 메모리
휘발성 메모리
실제 운영체제와 다른 프로세스들이 올라가는 공간
하드디스크나 SSD 보다 속도는 빠르지만 가격이 비쌈
데이터를 저장하기 보다는 실행 중인 프로그램만 올림
캐시
메인메모리에 있는 값을 레지스터로 옮기려면 시간이 한참 걸림
이때, 미리 가져와서 저장하는 공간이 필요한데 캐시가 이에 해당
휘발성 메모리
성능의 이유로 여러개를 둠 (L1, L2, … )
보조저장장치 (HDD, SSD 등)
비휘발성 메모리
사무용 프로그램이나 게임, 작업한 파일을 저장하는 공간
가격이 메인 메모리에 비하면 매우 저렴함
사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?
경계 레지스터
하드웨어적으로 운영체제 공간과 사용자 공간을 나누는 레지스터에 해당
CPU 내에 존재하며, 메모리 관리자가 사용자 프로세스가 경계 레지스터의 값을 벗어났는지 검사하고, 만약 벗어났다면 그 프로세스를 종료시킴
메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?
가변 분할 방식 - 세그멘테이션
장점 : 메모리를 가변적으로 분할할 수 있고, 코드영역, 데이터 영역, 스택 영역, 힙 영역을 모듈로 처리할 수 있기 때문에 공유와 각 영역에 대한 메모리 접근보호가 편리
단점 : 외부 단편화가 발생
외부 단편화?
프로세스들이 메모리에 적재되고 제거될 때 할당되지 않고 작은 조각들로 메모리가 나뉘어져 있는 상태
외부 단편화 해결책
메모리의 내용을 한쪽으로 밀어서 큰 공간을 만드는 방법 : 밀집
→ 시간 낭비가 심함
요구되는 메모리 크기보다 더 크게 할당
→ 이때, 할당 했지만 안쓰는 공간을 내부 단편이라고 함
고정 분할 방식 - 페이징
장점 : 모든 페이지의 크기가 동일해서 세그멘테이션과 다르게 크기를 표현하는 Bound Address가 필요하지 않으며, 이러한 특징떄문에 외부 단편화가 발생하지 않음. 메모리를 효율적으로 관리할 수 있음.
단점 : 하지만, 정해진 크기의 페이지보다 프로세스의 정보가 작으면 공간이 낭비, 이를 내부 단편화라고 부름.
세그멘테이션과 비교하면 많은 공간을 낭비하는 것은 아니므로 심각하게 생각하지 않음.
페이지로 나누기 때문에 논리적인 영역을 나눌 수 없음. 그래서 특정 영역에 대해서 공유하거나 권한을 부여하는 것이 어려움.
CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?
스레싱 Thrashing
스레싱의 원인
OS는 CPU의 이용률이 낮아지면 다중 프로그래밍 정도를 높임
페이지 부재가 많아지고 이로 인한 페이지 교체가 과도하게 발생하여 시스템 성능이 저하 → 스레싱
근본적인 원인은 물리 메모리의 크기가 작은것
→ 하드웨어적으로 해결하려면 메모리의 크기를 늘리면 됨
HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요? 이유를 함께 적어주세요.
운영체제는 파일을 관리하기 위해 파일 관리자를 두고 파일 테이블을 이용해 파일을 관리한다.
이때, 파일을 저장 하기 위한 저장장치(HDD, SSD)는 반드시 필요
파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?
디스크에 파일을 저장할 때마다 빈 공간을 찾으려 모든 공간을 뒤지는 방식은 비효율적이므로, 파일 시스템은 효율적인 관리를 위해 빈 공간을 모아둔 free block list
를 가지고 있다.
만약 파일을 삭제한다면 파일 시스템은 파일의 모든 정보를 지우는 것이 아니라 파일 테이블의 헤더를 삭제하고 사용했던 블록을 free block list
에 추가하는 방식으로 진행된다.
이렇게 처리하면 사용자는 파일이 삭제된 것처럼 느껴지는데, 사용했던 블록의 데이터는 그대로 남아있기 때문에
포렌식으로 데이터를 복구할 수 있음
댓글을 작성해보세요.