목록Dot-Gabi (43)
학사 나부랭이
//다른 곳에서는 메인 메모리를 편의상 메모리라고 했지만 여기서는 혼동을 방지하기위해 메인 메모리라고 풀 네임으로 썼어요. 컴퓨터는 다양한 저장장치가 사용되는데 속도(CPU가 접근하는데 걸리는 시간), 용량, 가격(비트당 단가)의 차이에 따른 분류를 할 수 있어요. 아래의 그림에서 아래에 있을수록 가격이 감소하고(용량이 증가하고) 속도가 느려져요. 그러니까 싸고(크고) 느린 저장장치가 비싸고(작고) 빠른 저장장치를 보완해줘요. 여기서 프로그램이 실행되기 위해서는 반드시 메인 메모리에 있어야 해요. 그 중 일부분이 캐시로, 또 그 중 실행할 명령어는 CPU 레지스터에 적재되어서 실행 과정을 거쳐요. Register CPU는 여러 레지스터를 가지고 있는데 알다시피 메인 메모리보다 빠르지만 크기가 작아요. 시..
운영체제는 크게 커널과 유틸리티 프로그램으로 나뉘어요. Kernel 사용자와 응용 프로그램을 위해 가장 빈번히 사용되는 기능을 담당하는 부분이에요. 빈번하니까 메모리에 상주(常住)해야겠죠? 계속 HDD와 메모리를 왔다 갔다 거리면 입출력 낭비니까요. 컴퓨터가 부팅될 때 메모리에 적재되고 종료될 때까지 계속 남아있어요. 운영체제의 핵심이며 핵(Nucleus, 核), 관리자, 메모리 상주 프로그램이라고 부르기도 해요. Utility program 운영체제의 프로그램 중 디스크 조각모음, 메모장 같은 자주 사용되지 않는 프로그램들은 HDD에 두고 필요할 때 잠시 메모리에 적재시켜 실행한 후 다시 HDD로 보내면 응용 프로그램을 위한 메모리 공간을 확보할 수 있어요. 이를 유틸리티 프로그램이고 비상주(非常住) ..
컴퓨터의 여러 응용 프로그램을 설치해주고 하드웨어 장치를 효율적으로 작동하게 관리하는 자원 관리와 사용자가 컴퓨터를 손쉽게 이용할 수 있도록 해주는 User Interface를 위한 프로그램의 집단이에요. 운영체제는 컴퓨터의 하드웨어를 조정하고 관리하는 소프트웨어라는 점에서 응용 프로그램과 차이를 가져요. 컴퓨터의 기본 요소는 4가지가 있고 각각 하나 이상의 모듈이 존재해요. 이런 구성 요소들은 프로그램 수행을 위해 연결되어 있죠. CPU 컴퓨터의 동작을 제어하고 데이터를 처리해요. MIPS(Million of Instructions Per Second, 초당 n00만 개의 명령을 수행)라는 단위로 속도를 측정해요. 메인 메모리 데이터와 프로그램을 저장해요. 컴퓨터가 종료되면 내용이 사라지는 휘발성이고 ..
Process 프로그램은 파일 시스템에 존재하는 실행 파일이고 프로세스는 컴퓨터 상에 수행 중인 프로그램이에요. 실행을 위해 커널에 등록되어있고 CPU 레지스터, Program Counter 값 등의 커널에 등록된 것들을 모두 합친, 즉 프로그램 코드와 그 코드에 연계된 데이터의 집합이에요. 프로세스는 아래와 같은 구성요소를 가져요. PID(프로세스 식별 번호) 프로세스의 유일한 식별자이며 정수 번호예요. 상태 준비, 실행, 대기, 보류 등의 상태를 나타내요. 우선순위 스케줄링을 할 때 사용되는 다른 프로세스들과의 상대적인 우선순위 수준을 나타내요. Program Counter(프로그램 계수 計数) 프로그램에서 다음에 수행될 명령어의 주소 값을 가지고 있어요. 메모리 포인터 프로그램과 데이터가 저장되어있..
운영체제가 수행하는 핵심 작업 중 하나는 이용 가능한 자원을 관리하고 다양한 프로세스의 자원 요구를 스케줄링하는 것이에요. 이 자원 할당 및 스케줄링 정책은 다음의 세 가지 사항을 고려해야 하죠. Differential responsiveness(반응 시간 차등화) 다른 서비스 조건을 지닌 작업을 구별해야 해요. 그러면서도 운영체제는 모든 요구 조건을 포괄적으로 만족할 수 있도록 할당 및 스케줄링을 해야 하죠. 또 이런 결정을 동적으로 내려야 하죠. 만약 프로세스에게 입출력 장치를 할당했을 때 다른 프로세스가 이 장치를 요구할 것에 대비해 최대한 빨리 수행시켜야 하죠. Faimess(공정성) 특정 자원을 사용하고자 하는 모든 프로세스, 특히 비슷한 요구를 할 경우 그 자원에 동등하고 공정하게 접근할 수 ..
Deadlock(교착 상태)란 프로세스들이 더 이상 진행하지 못하고 영구적으로 블록 된 상태예요. 여러 프로세스들이 각자 가지고 있던 자원을 반납하지 않고 상대방의 자원을 요구할 때 발생하는데 이러면 응답 없음이 뜨고 해당 프로세스가 보유한 자원이 이 상태에서 벗어나기 전까지는 활용되지 못해요. Process P ... Get A ... Get B ... Release A ... Release B ... Process Q ... Get B ... Get A ... Release B ... Release A ... 3: 프로세스 Q가 자원 B를 획득하고 프로세스 P가 자원 A를 획득하고자 하는데 이 때, Q는 자원 A를 획득하려다 블록되고 P는 자원 B를 획득하려다 블록되어요. 서로 블록되어 기다리고 있기..
동기화 공유되고 있는 변수를 사용해 한 프로세스가 작업을 하고 있을 때, 다른 프로세스가 사용하는 것을 막아주는 상호 배제의 한 방법이에요. 여기서 동시에 여러 프로세스가 한 자원에 접근해 조작할 때, 접근 순서에 따라 값이 변하는 상황이 Race condition이에요. 임계영역 Race condition이 일어날 수 있는 코드/부분/영역이에요. 여기에는 다음의 조건이 필요한데 먼저, 임계 영역을 가지고 있는 프로세스가 여러 개 있을 때, 반드시 하나의 프로세스만 임계 영역에 들어갈 수 있어야 해요. 그리고 임계 영역이 아닌 곳에서 멈춘 프로세스는 다른 프로세스에게 영향을 줘선 안 되죠. 임계 영역에 접근하려는 프로세스는 교착 상태나 기아가 일어나지 않아야 하고 임계영역에 들어간 프로세스가 없을 때, ..
프로세스 병행성은 병렬성과 헷갈릴 수 있는데 이 참에 차이를 확실히 두죠. 병렬성 Multi-Processing(다중 처리 시스템)인데 여러 프로세스가 각각 다른 CPU에서 수행을 할 수 있는 거예요. 아래를 보면 스펀지밥의 손이 여러 개고 각각 프로세스 하나씩 맡고 있죠? 병행성 CPU가 한 번에 하나의 프로세스만 실행하는데 대신 시간을 나눠서 여러 프로세스를 빠르게 전환해가며 실행해요. 그래서 마치 여러 프로세스를 한 번에 하는 것처럼 보이죠. 여기서는 스펀지밥의 오른손은 하나지만 소스도 뿌리고 뒤집개도 집는 프로세스를 빠르게 전환해서 마치 소스를 뿌리는 일과 뒤집개를 집고 있는 일이 동시에 일어나는 것처럼 보이죠? 병행성의 경우 프로세스 간 context switching(문맥 교환)도 일어나는데 ..