하다보니

컴퓨터 구조와 프로그램 실행 본문

CS 지식/운영체제

컴퓨터 구조와 프로그램 실행

claire 2022. 2. 4. 18:16

컴퓨터를 호스트라고 한다. cpu는 메모리에 올라와 있는 기계어를 처리한다. cpu안에 메모리 주소를 가리키는 레지스터가 있다.(program counter이다.) cpu는 메모리에 있는 instruction을 순차적으로 수행한다. 

cpu는 아주 빠른 일꾼이다. interrupt 들어온 것이 있는지 check 해서 하던 작업을 멈추고 누가 쓰고 있었던 상관없이 cpu 제어권이 운영체제한테 넘어간다. 해당 interrupt에 맞게 처리해야 할 일들이 운영체제 커널에 함수로 정의가 되어 있다. 인터럽트 벡터는 인터럽트 번호와 주소의 쌍을 가진다. cpu는 매번 program counter가 가리키는 곳을 실행하게 된다. 운영체제가 cpu를 가지고 있을 때는 mode bit이 0이다. io디바이스에 접근하는 모든 instruction은 mode bit이 0일 때만 실행할 수 있게 막아뒀다. 운영체제만 접근 가능. mode bit이 1일 때는 사용자 프로그램이 cpu를 가지고 있는 것이다. 사용자 프로그램이 운영체제에 요청을 하기 위해서 시스템 콜을 한다. 운영체제에 있는 함수를 사용자 프로그램이 요청을 한다. 

하드 위에 인터럽트 - 하드웨어가 발생시킨 인터럽트. cpu가 아닌 다른 하드웨어 장치가 cpu에 어떤 사실을 알려주거나 cpu 서비스를 요청해야 할 경우 발생. 일반적으로 인터럽트를 말할 때 하드웨어 인터럽트를 말한다. 

 

소프트웨어 인터럽트(trap) - 프로그램이 필요에 따라서 interrupt line을 세팅해서 cpu를 직접 부른다. 

 

systemcall : 사용자 프로그램이 필요에 의해서 운영체제에 요청하는 것. 

excetion : 프로그램이 오류를 범한 경우. 

timer가 인터럽트를 걸 수도 있다. 

운영체제가 사용자 프로그램한테 cpu를 넘겨줄 때 mode bit을 1로 바꿔주고 넘겨준다. 이때, timer로 시간 세팅을 하고 넘겨준다. timer의 도움을 받아 여러 프로그램을 번갈아가면서 cpu에서 실행될 수 있다. 

 

동기식 입출력/ 비동기식 입출력

synchronous- 시간적으로 맞추는 것을 말한다. 

synchronous i/o란 io 요청 후 io 장치에서 작업이 완료된 후에야 사용자 프로그램이 다른 일을 할 수 있다는 것을 말한다. 

io는 kernel을 통해서만 가능하다. 

asynchronous io는 io 작업을 요청만 해두고 다른 작업을 한다. 

두 경우 모두 interrupt를 사용해서 io의 완료를 알린다. 

io 요청은 오래 걸리는 작업이다. synchronous io 요청을 한 다음에 다른 프로세스에 cpu를 넘겨준다. 

동기식 입출력은 io 요청 후 io가 끝날 때까지 cpu를 낭비시킨다. 따라서 io가 완료될 때까지 해당 프로그램에서 cpu를 빼앗는다. io 처리를 기다리는 줄에 그 프로그램을 줄 세운다. 다른 프로그램에게 cpu를 준다. 

비동기식 입출력은 io가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어간다. io 요청만 보내 놓고 io와 무관한 프로세스를 진행한다. 

 

DMA를 둬서 메모리에 접근할 수 있는 권한을 준다. cpu가 인터럽트 당하는 빈도를 줄여준다. 빠른 입출력 장치는 인터럽트를 더 많이 건다. 

메모리만 접근하는 instruction이 있고 io를 하는 instruction이 따로 있다. 일반적인 i/o

io 장치에 메모리 주소의 연장 주소를 붙이는 방법. memory mapped i/o이다. 

 

저장장치의 계층 구조. 

cpu 안에 register - cache memory - main memory 까지 primary(cpu에서 직접 접근 가능), executable, 휘발성 매체(volatility)

magnetuc dist-optical disk - magnetic tape. 까지 secondary(cpu에서 직접 접근 불가능).

위로 갈수록 속도가 빠르고 비싸기 때문에 용량이 적다. 비휘발성 매체. 

캐시 메모리에 당장 필요한 것만 밑에서 위로 올려서 쓴다. 이것을 caching이라고 한다. 빠른 매체에 정보를 올려서 사용. 재사용성을 염두에 두고 사용하는 것이다. 

모든 프로그램이 독자적인 저장 공간을 가지고 있다. (virtual memory)

당장 필요한 것만 물리적인 메모리에 올려놓고 나머지는 swqp area에 둔다. 해당 하드디스크에 들어있는 내용은 의미가 없다. 전원이 나가면 삭제. 메모리 연장 공간의 용도

 

file system의 하드디스크는 비휘발성의 용도로 사용이 된다. 

code data stack으로 주소공간이 구성된다. 

 

프로세스마다 pcb가 하나씩 만들어진다. 함수를 호출하거나 리턴할 때 stack영역을 사용한다. 

운영체제 코드는 사용자 프로그램들의 필요에 따라 실행할 수 있다. 사용자 프로그램마다 커널 stack을 따로 두고 있다. 

 

커널 함수는 운영체제 프로그램의 함수이다. 커널 함수의 호출=시스템 콜

프로그램이 cpu를 가지고 있으면 user mode이다. 시스템 콜을 하게 되면 운영체제 kernel에 있는 코드가 실행. kernel mode라고 한다. user mode와 kernal mode를 반복한다. 

 

'CS 지식 > 운영체제' 카테고리의 다른 글

Process 2,3  (0) 2022.02.07
Process  (0) 2022.02.06
하드웨어 구조와 프로그램 실행 방식  (0) 2022.01.22
운영체제란  (0) 2022.01.21
운영체제 개요  (0) 2022.01.18