본문 바로가기

운영체제11

운영체제 가상메모리#3 Page Fault&Page Algorithm Page Fault CPU가 MMU를 통해서 가상주소를 물리주소로 바꾼 후에 메모리에 접근을 했는데 만약 원하는 페이지가 없다면 하드웨어에서 페이지를 가져와야 할 것이다. 이 때 페이지가 없는 경우를 Page Fault라고 하며 Page Fault발생시 OS에 interrupt를 걸게 된다. 그럼 OS는 IDT(Interrupt Descriptor Table)에 따라 Page Fault관련 인터럽트 처리를 실행하게 되는데 그럼 하드웨어에서 페이지를 가져온 후 다시 MMU를 통해 가상주소를 물리주소로 변환 후 페이지를 실행한다. * MMU가 메모리로부터 가상주소를 물리주소로 변환하기 위해 1. 가상주소를 토대로 메모리에 요청 2. 메모리는 물리주소를 MMU에게 가르쳐줌 3. 메모리로부터 받은 물리주소로 페.. 2020. 12. 15.
운영체제 가상메모리#1 가상메모리의 탄생 배경 폰노이만 구조에서 프로그램은 메모리에 올라와야 사용할 수 있다. 현재 자기의 컴퓨터가 8기가의 메모리를 가지고 있다고 할 때 리눅스 같은 경우 프로세스 하나에 4기가를 사용하는데(간단한 C언어 프로그램을 컴파일해서 1KB크기의 프로그램이더라도 실행시 4GB의 프로세스를 갖게된다) 그럼 단 2개의 프로세스만 올려야 할까? 이건 너무 비효율적이기 때문에 가상메모리의 개념이 나왔다. cpu가 프로세스 하나를 통째로 막 0.1초만에 실행하는게 아니고 순서대로 실행하므로 특정시간에 특정 부분의 프로세스를 실행하게 될것이므로 메모리 내에 프로그램을 통째로 올리는게 아니고 일부분만 올려놓고 실행하면서 바꿔가는 개념이다. 위처럼 각 프로세스들은 동일한 시작주소의 가상주소를 갖게 되고 이 가상주소.. 2020. 12. 13.
운영체제 파이썬의 gil과 멀티쓰레딩 파이썬은 gil이라는 특성 때문에 한번에 쓰레드 하나밖에 사용하지 못한다. 이는 파이썬이 느린 이유중에 하나이기도 하다. 근데 분명 파이썬에도 멀티쓰레딩을 위한 기본 모듈들이 있다. 여기서 의문이 들어서 찾아보았다. 내가 이해한 바로는 I/O작업 즉, 파일 읽기, 쓰기 등의 작업을 할 때는 파이썬이 gil을 풀어주기 때문에 I/O 작업을 할 때는 멀티쓰레딩이 가능해진다. 컴퓨터 구조상 I/O작업의 속도는 메모리 접근이나 레지스터 접근에 비해서 엄청나게 느리다. 그래서 I/O작업에서만 멀티쓰레딩이 가능해도 많은 성능이 개선될 수 있다. 2020. 12. 12.
운영체제 Context Switching Context Switching이란? CPU가 실행하는 process를 바꾸는 과정을 context switching이라고 한다. CPU는 여러가지 프로세스를 스케쥴러에 의해 번갈아가면서 실행한다. 예를들어서 현재 CPU가 process A를 실행하고 있는데 어느정도 시간이 흐르고 이제 스케쥴러에 의해 process B를 실행할 차례라면 process A에서 process B로 넘어가야 하는데 그냥 넘어갈 수는 없다. 왜냐하면 process A가 어디까지 실행되었는지를 알아야 다시 process A가 실행될 차례가 왔을 때 이어서 실행할 수 있기 때문이다. 모든 프로세스는 PCB(Process Control Block)라고 프로세스의 상태를 저장하는 구조체를 가지고 있다. PCB에는 process id와.. 2020. 11. 27.