본문 바로가기

OS

(18)
[운영체제] 캐시 캐시란, 메인메모리에 저장된 내용의 일부를 임시로 저장해두는 기억장치를 말한다. 왜 메인메모리가 있는데 캐시라는 저장장치를 두는 것이며 메인메모리와의 차이는 무엇일까? 메인메모리 메인메모리 = 주기억장치= RAM 개념 프로그램이 실행되려면 해당 프로그램이 복사되어서 메모리에 적재(메모리에 적재된 프로그램을 프로세스라고 한다.)되어야 한다. CPU는 연산을 수행한 후에 메인 메모리에 데이터를 저장하거나 필요한 데이터를 요구한다. RAM은 Random Access Memory의 약자로, 어느 위치에 저장된 데이터든지 접근하는데 동일한 시간이 걸리는 메모리를 말한다. (RAM은 DRAM과 SRAM이 있는데 주기억장치는 주로 DRAM을 의미) 특징 컴퓨터의 CPU가 현재 처리 중인 데이터나 명령만을 일시적으로 ..
[운영체제] 메모리 관리 전략 ※ 메모리란? : 메인 메모리, RAM을 뜻한다. 프로그램 실행 시 필요한 주소, 정보들을 저장하고 가져다 사용할 수 있게 만드는 공간. 즉, 작업을 위해 사용되는 공간. 메모리 관리 전략이 필요한 이유? 멀티프로그래밍 환경으로 변화하면서 한정된 메모리를 효율적으로 사용해야 했고, 운영체제가 이를 어떻게 관리하는지에 대한 관리방법이 중요해졌다. 🤔 왜 운영체제가 관리하는가? 각각의 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있다. 단지, 운영체제만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않기 때문에 운영체제에서 메모리를 관리한다. 운영체제의 역할 실행파일이 로더에 의해 메모리에 올라오고 운영체제는 이 실행파일을..
[운영체제] Deadlock(교착상태) 다중프로그래밍 시스템에서 여러 프로세스들이 돌아가는데 자칫 이 프로세스들 간에 꼬이는 경우가 발생한다. 이렇게 꼬이는 현상을 Deadlock, 교착 상태라고 한다. Deadlock 위의 사진은 데드락을 나타내는 사진이다. 도로에 있는 모든 차들은 앞으로 가야 하는데 다른 차가 자신의 진행 방향을 막고 있어서 앞으로 나가지 못한다. 한마디로 움직일 수 없는 상황이다. 이 때 어떤 하나의 차가 뒤로 후진하지 않는 이상 이런 상황은 해결되지 않는다. 데드락은 프로세스가 자신의 자원을 점유하면서 다른 프로세스가 점유한 자원을 기다릴 때, block된 상태를 의미한다. 여기서 말하는 자원은 I/O device, CPU cycle, momory space, semaphore 등의 hw/sw 자원을 모두 포함한다. ..
[운영체제] 프로세스 동기화 3 여기서 드디어 채정아 문제 나온다 .. 정아가 문제라는 건 아니고 .. 우리 정아는 최고야 -3- 동기화와 관련된 고전적인 문제 1. Producer - Consumer Problem (= 생산자 소비자 문제) 생산자 버퍼의 홀에 데이터를 채우는 역할 소비자 데이터를 가져가는 역할 생산자와 소비자는 여러 명이 있으며 그렇기 때문에 이들 사이에는 동기화가 필요하다. 예를 들어서 생성자가 2번째 홀에 데이터를 넣었는데 또 다른 생성자가 다시 데이터를 넣으면 안된다. 또한 버퍼가 다 채워져 있는 상태에서는 소비자가 데이터를 가져가지 전까지 생산자는 데이터를 넣을 수 없다. 개인적으로 생산자-소비자 (버퍼/홀/데이터) 개념을 어떻게 이해했냐면 .. 회전초밥 집이라고 비유해서 생각했다. 회전 초밥 집이 있고, 여..
[운영체제] 프로세스 동기화 2 Semaphore 세마포어는 추상 자료형이다. 여기서 추상 자료형이란 "기능의 구현 부분을 나타내지 않고 순수한 기능이 무엇인지 나열한 것을 추상 자료형" 이라고 한다. 전자레인지 시작버튼을 누르면 전자레인지에서 sw/hw 적으로 어떻게 동작하는지는 모르지만 전자레인지가 동작하게 된다. 이렇게 추상 자료형은 내부적으로 어떻게 구현되었기 보다는 기능과 사용방법을 정의한 것을 말한다. 이런 관점에서 세마포어를 이해해 보자면, 세마포어는 여러 프로세스가 하나의 공유자원에 접근하는 것을 제어하는 역할을 한다. semaphore는 정수값을 가지며 이 정수값에 P(S)와 V(S), 2가지 연산을 할 수 있다. 1. P(S) : semaphore를 획득(= 공유자원에 대한 접근권한을 얻음) P(S)연산은 공유자원에 ..
[운영체제] 프로세스 동기화 1 다중 프로그래밍 환경에서는 여러 개의 프로세스가 CPU를 차지하기 위해서 경쟁하고 각 프로세스는 경우에 따라서 다른 프로세스와 데이터를 공유하기도 한다. 이렇게 여러개의 프로세스가 하나의 데이터를 같이 사용하게 되는 경우 해당 데이터에 대한 동기화 처리가 필요하다. 그래야 각 프로세스가 데이터를 사용할 때 문제 없이 사용할 수 있다. (= 공유 데이터에 대한 무결성이 보장된다.) 데이터 접근 컴퓨터 시스템에서 데이터에 접근하는 패턴은 아래와 같다. 데이터가 저장되어 있는 곳에서 데이터를 읽어와 CPU에서 연산을 한 후 다시 데이터를 갖고 온 곳에 가서 저장한다. 데이터를 읽기만 한다면 문제가 되지 않는다. 여러 프로세스가 읽기만 하면 데이터가 변경되는 경우가 없다. 하지만 대부분의 경우 데이터를 조작하기..
[운영체제] 시스템 구조 및 프로그램 실행 컴퓨터 시스템 위의 사진은 컴퓨터 시스템의 하드웨어 구조를 간략하게 요약한 것이다. ✔️ CPU와 Memory로 구성된 것을 보통 컴퓨터라고 하며 ✔️ I/O device의 데이터가 컴퓨터로 들어가는 것은 input / CPU 처리 후 다시 I/O device로 나가는 것을 Output이라고 한다. 메모리는 CPU의 작업 공간이며, 매 clock cycle마다 메모리의 instruction(= 명령어)를 읽어서 실행한다. 여기서 instruction은 PC(Program Counter)에 저장되어 있다. CPU는 이 주소에 저장되어 있는 instruction을 실행하고 또 그 다음의 명령어를 읽고 실행하고 .. 의 과정을 반복한다. Interrupt CPU는 PC의 값을 읽을 때마다 Interrupt l..
[운영체제] 인터럽트 인터럽트 대부분의 시스템에서 하나의 CPU를 두고 여러 프로세스들이 경쟁을 하면서 자신의 작업을 수행한다. 이 때 각 프로세스는 정해진 시간만큼 CPU를 사용할 수 있고 정해진 시간이 지나게 되면 타이머 인터럽트에 의해 다른 프로세스에게 CPU가 이양된다. 그런데, 만약 CPU가 A프로세스에게 할당되어 있는데 급하게 처리해야하는 작업이 발생하면 어떻게 될까? 사용자의 응답에 관한 일인 경우 최대한 즉각적으로 답을 주어야 한다. 이럴 때 발생하는 것이 인터럽트이다. 하드웨어 입출력 장치의 사용, 프로그램에서 0으로 나누는 경우, 커널 함수를 사용하는 시스템 콜 .. 등이 인터럽트에 해당한다. interrupt 라는 단어만 보면 '방해'라는 것을 의미하는 것처럼 들리지만 OS에서는 방해라기보다 우선순위가 더..