컴퓨터 시스템의 변화 초기 컴퓨터 시스템은 하나의 프로그램만 실행시켰다. 하나의 프로그램을 실행시키는데 프로그램의 상태, 스케줄링 정보 등등을 저장할 필요가 없다. 어짜피 하나의 프로그램을 계속 실행하기 때문이다. 하지만 오늘날의 컴퓨터 시스템은 메모리에 다수의 프로
이 글에서는 프로세스의 종류와 스케줄링 큐에 대해서 알아본다. 책에는 3장에서 스케줄러와 컨텍스트 스위치를 다루지만 이 내용은 5장에서 자세히 다루므로 넘긴다.
이 글은 프로세스 등의 이해가 필요합니다. 멀티 프로그래밍 CPU라는 빠른 연산장치를 이용하는데 하나의 프로그램만 돌려봅시다. CPU에서 돌아가는 하나의 프로그램이 가끔은 화면에 무엇인가를 출력하기도 하고, 가끔은 특정 파일에 접근하는 등 I/O 작업도 수행할 것입니
문제의 프로그램 단순하게 result에 값을 loopCnt만큼 더하고 빼는 프로그램이다. 당연히 실제값은 기댓값과 같은 0이 나온다. 이 프로그램을 2개의 스레드에서 실행시켜보자. 기댓값은 실제값과 같을까? 실행할 때마다 값이 변한다. 프로그램 단순화 이제 프로
하드웨어의 지원 앞 글에서 소프트웨어 기반 해하드웨어의 지원이 필요한 이유를 알아봤다. 뮤텍스, 세마포어, 모니터 모두 하드웨어의 지원을 기반으로 사용되기 때문에 먼저 컴퓨터에서 한 클럭에 원자적으로 실행되는 연산인 testandset(), compareandswap(
6-1에서 동기화를 다루는 임계구역 문제를 알아봤고, 피터슨 알고리즘을 통해 소프트웨어 해결책의 한계를 알아봤다. 6-2에서는 이 한계를 해결하기 위한 하드웨어의 지원을 알아봤다. 하지만 6-2에서 언급한 TAS와 CAS는 응용 프로그래머가 직접 쓰기 힘들다. 이번
멀티 프로그래밍 메모리 할당을 다루기 전 멀티 프로그래밍에서의 메모리를 생각해보자. 여러 프로세스가 메모리에 올라가서 실행중이다. 여기서 운영체제는 한 프로세스가 다른 프로세스의 메모리 공간에 침입하지 못하도록 막아야 한다. 즉 각각의 프로세스가 독립적으로 메모리를
우리는 앞서 메모리의 침입을 막기위해 Base, Limit 레지스터를 이용한 보호 방법을 알아봤다. 그 과정에서 CPU에서 취급하는 논리주소와 실제 메모리에서 다루는 물리주소의 차이를 해결하는 MMU도 확인했다. 해당 글에서는 앞서 살펴본 내용을 바탕으로 본격적으로
가변 분할 방식인 가변 파티션과 고정 분할 방식인 페이징에 대해서 알아봤고, 두 방식에서 일어나는 단편화에 대해서 알아봤다. 하지만 페이징과 페이징 테이블에 대한 궁금한 점들이 남아 있다. 이 글에서 페이징과 페이징 테이블에 대해서 더 자세하게 알아본다. 프레임 테이