Computer Science/운영체제

동기식 입출력 (Synchronous I/O) sync -> 시간적으로 서로 맞춘다 !! 립싱크할때의 그 싱크를 생각해보면 쉽다. I/O 요청 후 입출력 작업이 모두 완료 된 후에 CPU 제어가 사용자 프로그램에 넘어간다. 구현 방법 1 I/O 끝날때까지 CPU를 낭비시킨다. -> 한번에 하나의 I/O만 일어난다. 구현방법 2 -> 보통 동기식 입출력을 구현하는 방식 I/O 가 완료될 때까지 해당 프로그램에게서 CPU빼앗고 I/O 처리를 기다리는 줄에 그 프로그램이 대기한다. 다른 프로그램에게 CPU를 준다. ex) 정말로 스토리지에 결과값이 잘 write되었는지 확인해야만 다음 작업을 할 수 있는 경우 동기식으로 수행해야 할 것이다. 비동기식 입출력 (Asynchronous I/O) I/O가 시작된 후..
컴퓨터 시스템 구조 컴퓨터 시스템 구조는 크게 CPU, 메모리, I/O Device, Disk로 구성되어 있다. Memory : CPU의 작업공간 CPU에서 하는 일을 실행하는 공간이다. CPU : 매 clock cycle마다 기계어를 하나씩 읽어서 실행하게 된다. I/O Device : keyboard, 마우스, 모니터 등의 Input / Output 기계 장치 Disk : 보조 기억 장치이면서도 I/O 장치라고도 볼 수 있다. 메모리를 읽어들이는 Input Device이면서 처리 결과를 저장하는 Output Device이기 때문이다. Device Controller : 각각의 I/O 장치에는 Device Controller가 붙어있다. 이 Device Controller가 각각의 I/O장치를 관리한..
Intro 프로그램을 실행시킬 때 메모리에 로드되어 프로그램이 실행되는 과정에서 OS는 메모리(RAM) 에 공간을 할당해준다. 그렇지만 RAM 은 제한된 양을 가지고 있어서 이 제한된 스토리지를 어떻게 하면 효율적으로 사용할 수 있을지를 결정해야 할 것이다. 따라서 개발자 (사용자) 입장에서는 memory 구조를 알면 프로그램에 의해 사용되는 메모리의 양을 결정할 때 유용할 것이다. 각각의 영역은 개별적인 read-write 권한을 가진다. 코드(텍스트) 영역 개발자가 작성한 소스코드가 들어가는 부분이다. 텍스트 영역이라고도 부른다. 프로그램이 컴파일 된 후에, 바이너리 파일이 생성되고 이 바이너리 파일이 RAM에 로드된다. 바이너리 파일에 포함되어 있는 명령어들이 (함수, 제어문, 상수 등) 코드 영역..
Process 프로세스는 연속적으로 실행되고 있는 상태의 프로그램을 뜻한다. 메모리위에 올라와서 연산들이 처리되고 있는 프로그램의 인스턴스이다. 인스턴스라는 것은 프로그램 실행에 필요한 내용이 메모리에 적재된다는 의미이다. 프로세스는 실행될 때 운영체제로부터 Virtual Memory 를 정해진 크기만큼 할당받게 된다. 또 달리 생각하면 프로세스 단위로 Virtual Memory 를 할당해준다고 이해할 수 있다. Virtual Memory 란 비싸고 빠르고 작은 RAM 과 크고 저렴하고 느린 HardDisk 를 병합해서 하나의 기억장치처럼 쓰겠다는 것이다. 이 가상메모리를 구현하는 역할을 하는 특수 메모리 관리 하드웨어가 MMU(Memory Management Unit)이다. Thread 스레드가 프로세..
Critical Section Problem n개의 프로세스가 공유데이터를 동시에 사용하기를 원하는 경우 발생하는 문제 각 프로세스의에서 공유 데이터를 접근하는 코드를 critical section 이라고 한다. 하나의 프로세스가 critical section 에 있을 때 다른 모든 프로세스는 critical section에 들어갈 수 없어야 한다. Critical Section Problem을 해결하기 위한 조건 Mutual exclusion (상호 배타) : 한 프로세스가 critical section 부분을 수행하고 있다면, 다른 프로세스들은 그들의 criitical section 에 들어가지 않는다. 즉, critical section에 꼭 하나의 프로세스만이 진입할 수 있다는 조건이다. Prog..
Interrupt 현대의 운영체제는 인터럽트에 의해 구동된다라는 말이 있을 정도이다. 프로그램을 실행하는 도중에 예기치 않은 상황이 발생하는 경우, 실행을 중단하고 발생한 상황에 대한 처리가 먼저 필요하다고 CPU에게 요청하는 것이다. CPU는 Interrupt line 을 통해 Interrupt가 발생되었는지에 대해 안다. CPU는 한 명령을 수행한 후 interrupt line을 확인한다. Timer Interrupt 한 프로그램이 CPU를 독점하는 것을 방지하기 위해서 Timer라는 하드웨어는 Timer Interrupt를 사용한다. 예를들어 무한루프, while문과 같은 경우 프로그램이 종료되지 않을 것이고, I/O를 하지도 않을 것이다. 이렇게 한 프로그램이 CPU를 독점하게 된다면 다른 프로그..
CPU Scheduling이 필요한 이유 ? 멀티프로그래밍을 지원하는 운영체제에서 효율적으로 일을 처리하기 위해서 process 스케줄링이 필요하다. single CPU에서는 오직 하나의 process만이 CPU를 사용할 수 있으며, 다른 process들은 CPU를 사용하기 전까지 대기를 한다. ( 여기서 process 스케줄링은 thread 스케줄링과 같은 의미로도 사용할 수 있다. ) 스케줄링에는 두가지 이슈가 있다. CPU Burst에 들어온 프로그램이 여러게 있는데, 누구한테 먼저 줄것인가 ? CPU를 다 쓰고 I/O를 할때까지 한 process에게 CPU를 계속 줄것인가 아니면 중간에 CPU를 뺏어서 다른 프로세스에게 넘겨줄 것인가 ? CPU를 중간에 뺏지 않는다면 긴 프로세스 하나때문에 다른 ..
Multitasking : 동시에 실행되는 것처럼 보이지만, 사실상 CPU에서는 매 순간 하나의 작업만이 실행되고 있다. 하나의 프로그램이 끝나기 전에 다른 프로그램이 실행되는 것 Multi programming : 메모리에 여러 프로그램이 동시에 올라가 있음. 메모리 측면을 강조 Time sharing : CPU 를 좀 더 강조한 측면. 시간을 쪼개서 여러가지 프로그램을 실행한다. Multiprocess : 실행중인 프로그램을 프로세스라고 하며, 여러 프로그램이 동시에 실행된다는 의미 Multiprocessor : processor라는 것은 보통 CPU를 말한다. CPU가 여러개 있는 컴퓨터를 의미한다.
minjiwoo
'Computer Science/운영체제' 카테고리의 글 목록 (3 Page)