본문 바로가기

시스템 프로그래밍3

[시스템 프로그래밍] 가상 메모리와 힙 가상 메모리 프로그램에게 할당된 데이터는 메인 메모리의 크기를 넘을 수 있는데, 어떻게 이것이 가능할까? 프로그램은 할당된 메모리를 전부 사용하지 않을 확률이 높다. 이런 컨셉으로 나오는 것이 가상 메모리 시스템이다. MMU(Memory Management Unit) CPU가 마치 프로세스에 할당된 메모리가 실제로 존재하는 것처럼 관리해준다. CPU는 메모리를 요청할 때 직접 메모리에 접근하지 않고 MMU를 통해서 요청한다. 페이지 프레임은 실제 메모리 블록을 의미하고 페이지는 가상 메모리 블록을 의미한다. 가상 메모리는 물리 메모리와 매핑이 되어 있다. MMU는 CPU의 요청에 따라 매핑되는 페이지를 계산한다. 근데 만약에 물리 메모리에 해당 페이지 정보가 로드된 상태가 아니라면? 하드디스크를 메인 메.. 2023. 12. 4.
[시스템 프로그래밍] 쓰레드 동기화와 캐시 알고리즘 쓰레드의 동시접근 이슈 일반적으로 실행중인 쓰레드의 변경이 라인 단위로 이뤄진다고 생각하지만, 연산을 처리하는 도중에 컨텍스트 스위칭이 일어날 수 있다. 따라서 쓰레드가 같은 메모리 영역을 동시에 접근하는 것은 문제를 일으킬 가능성이 높다. 메모리 접근의 동기화 - 유저 모드 동기화 동기화가 진행될 때, 커널 코드가 실행되지 않는 방식이다. 커널 모드의 전환이 일어나지 않으므로 성능상의 이점이 있다. 다만 그 만큼 기능상의 제한도 존재한다. - 커널 모드 동기화 동기화와 관련된 처리에서 커널 모드로의 전환이 이루어져서 성능 저하로 이어진다. 그러나 유저 모드 동기화에서 제공하지 못하는 기능을 제공 받는다. - 크리티컬 섹션 한 순간에 하나의 쓰레드만 접근이 요구되는 코드 블럭을 의미한다. - 유저모드 동.. 2023. 12. 3.
[시스템 프로그래밍] 스케줄링과 쓰레드 비선점형 OS 현재 실행중인 프로세스보다 높은 우선순위의 프로세스가 등장한다고 해서 실행의 대상을 바로 변경하지 않는다. 실행중인 프로세스가 명시적으로 CPU를 양보할 때까지, 혹은 I/O작업 등으로 블로킹 상태에 놓일 때까지 기다려야 한다. 선점형 OS 현재 실행 중인 프로세스보다 우선순위가 높은 프로세스가 등장하면 스케쥴러에 의해 실행 순서가 조정된다. 비선점형 OS에 비해 스케쥴러가 하는 일이 더 많은 것도 특징이다. 라운드 로빈 스케쥴링 알고리즘 같은 우선순위 프로세스들간 형평성 유지를 위해, 정해진 시간 간격 만큼 실행하고 다른 프로세스에게 CPU할당을 넘기는 방식으로 동작한다. 스케줄링 알고리즘에 의해 스케줄링이 진행되는 시점 1. 매 타일 슬라이스마다 스케줄러 동작 정해진 시간이 지나면 다른.. 2023. 12. 3.