728x90
반응형

운영체제 44

프로세스에서의 동기화 (Process Synchronization) [운영체제]

프로세스 동기화를 왜할까...? 우리 컴퓨터는 사실 여러가지의 프로세스가 진행중이기 때문에 실행 중인 다른 프로세스의 실행에 영향을 주거나 받을 수 있다. • Processes can execute concurrently • May be interrupted at any time, partially completing execution • Concurrent access to shared data may result in data inconsistency • Maintaining data consistency requires mechanisms to ensure the orderly execution of cooperating processes 우리는 이미 프로세스가 병렬로 실행 가능하다는 것을 알고있다..

동기화, 모니터 : Synchronization, Monitor [운영체제]

세마포를 기반으로 이해하면 된다. [컴퓨터(Computer Science)/운영체제(Operation System)] - 동기화, 세마포 : Synchronization, Semaphores [운영체제] • A high-level abstraction that provides a convenient and effective mechanism for process synchronization • Abstract data type, internal variables only accessible by code within the procedure • Only one process may be active within the monitor at a time • But not powerful enough to m..

Critical Section, 임계구역이란? [운영체제]

프로세스를 먼저 알고가자. [CS Interview] - Process, 프로세스란? 협력적 프로세스는 시스템 내에서 실행 중인 다른 프로세스의 실행에 영향을 주거나 영향을 받는 프로세스다. 협력적 프로세스는 논리 주소 공간(코드 및 데이터)을 직접 공유하거나 공유 메모리 또는 메시지 전달을 통해서만 데이터를 공유할 수 있다. 즉, 쉽게 말하자면 협력적인 순차적 프로세스 또는 스레드로 구성된 시스템에서는 서로 비동기적으로 수행하면서 데이터를 공유할 가능성이 있다. 그렇게 된다면 부정확한 상태에 도달한다. 예를 들면 2 개의 프로세스가 동시에 변수 x을 조작하도록 허용한다는 그런 경우가 생기는 것이다. 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황을 경쟁 상황(race condition)이라고 하는..

Dining philosopher problem,식사하는 철학자 문제 [운영체제]

[컴퓨터(Computer Science)/운영체제(Operation System)] - 동기화, 세마포 : Synchronization, Semaphores [운영체제] [컴퓨터(Computer Science)/운영체제(Operation System)] - 동기화, 모니터 : Synchronization, Monitor [운영체제] 세마포나 모니터에 대한 사전 지식을 바탕으로 설명한다. 유명한 문제인데 컴퓨터랑 많이 결부지어서 언급되고는 한다. CPU의 병행 제어 문제 중의 하나로 중요하기 때문이다. 설명해보자면 우선 5명의 철학자들이 둘러앉아 있고 생각한다. 원형 테이블을 공유하며, 테이블 중앙에는 밥이 있다. 또한 철학자들은 서로 상호 대화, 행동 일절 금지이다. 만약 배고파진다면 자신의 왼쪽에 있는..

Deadlock, 교착상태란? [운영체제]

꼬리 물기해서 망한 도로의 사진이다. 이제 이 도로는 망했다. 절대 나갈 수 없다. 꼬리물기는 나쁜 것이다 빨간 불 되면 멈춰야 서로 좋다. 컴퓨터에서도 이런 현상이 일어난다는데 교착상태, deadlock이다. 알아보자 동기화에 대해 알고 있다는 가정 하에 설명한다. [컴퓨터(Computer Science)/운영체제(Operation System)] - 프로세스에서의 동기화 (Process Synchronization) [운영체제] 앞의 동기화에서 이미 알아본 현상이다. 서로의 Event를 기다리며 무한히 대기하는 상태를 말한다. **Event란 자원의 할당과 해제를 의미한다. P0는 B자원을 기다리며 A를 점유하고 P1는 A자원을 기다리며 B를 점유하고 누구하나가 자신의 자원을 내놓지 않는 한 무한 대..

Readers and Writers Problem, 동기화 [운영체제]

여기에서는 읽는 프로세스, Reader 쓰는 프로세스, Writer 2가지가 있다. 여기서 공유 데이터는 DB와 readcount가 있다. Write할 때는 db에 다른 프로세스가 접근하면 안되고 Read는 동시에 여럿이 db에 접근이 가능하다. 처음에 이해하기로는 Write에는 mutex를 보장해야해서 lock을 걸어야 하고 Read에는 lock이 필요 없다는 말이다. 과연 그럴까?? 그렇게 이해하면 안되고 db에 lock은 read가 일어날 땐 db에 lock을 걸어서 write가 못하게하는 용도고 write가 일어날 땐 db에 lock을 걸어서 read를 못하게하는 용도다. 읽기와 쓰기가 같이되면 안되기에 하는 db lock이라는 것이고 mutex는readcount에 접근할 때 올바른 readcou..

Interrupt, 인터럽트란? [운영체제]

쉽게 말하자면 interrupt는 하드웨어와 OS 간의 상호작용 수단이다. 우선 사건(event)가 발생하면 하드웨어나 소프트웨어로부터 발생한 interrupt에 의해 신호가 보내진다. **event는 일반적으로 I/O를 뜻한다. **하드웨어는 언제든 system bus를 통해 CPU에 신호를 보내 interrupt를 발생시킬 수 있다. (system bus는 main communication path로 주요 요소들과 연결되어있다.) **소프트웨어는 시스템호출(system call )을 통해 interrupt를 발생시킬 수 있다. System call은 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널함수를 호출하는 것을 의미한다. 소프트웨어로 생긴 인터럽트는 Trap이라고 한다. 일반적으로 CPU가..

Bounded-Buffer Problem(Producer-Consumer Promlem), 동기화[운영체제]

세마포와 모니터의 사전 이해가 필요하다. [컴퓨터(Computer Science)/운영체제(Operation System)] - 동기화, 세마포 : Synchronization, Semaphores [운영체제] [컴퓨터(Computer Science)/운영체제(Operation System)] - 동기화, 모니터 : Synchronization, Monitor 사실 나는 생산자-소비자 문제로 알고 있었다. 생산자가 데이터를 생산하면 소비자는 그 데이터를 소비하는 형태의 문제이다. 산한 데이터는 중간의 버퍼,buffer 에 저장해두고 소비자는 여기서 필요한 만큼 가져간다. 버퍼의 크기는 유한해서 버퍼 공간 크기 이상의 데이터를 저장할 수 없고 소비자는 버퍼가 비어있다면 가져올 수 없다. **유한한 버퍼의 ..

저장구조, 입출력 구조, 메모리 특징[운영체제]

먼저 살펴볼 것은 Storage structure 이다. 왜 배우냐면 우선 프로그램은 실행되기 전에 memory에 load가 되어야 한다. 그렇다면 memory에 불러오는 과정까지가 프로그램의 일부라는 것인데 배워야한다는 느낌이 온다. ㅎㅎ 우선 컴퓨터는 rewritable memory라고 불리는 main memory에 load를 하고 프로그램을 실행한다. 대표적으로 RAM, random access memory라고 부른다. semiconductor를 이용한 main memory는 DRAM이라고 부른다. ++ dynamic random access memory의 준말이다. **보통 volatile이다. 휘발성으로 전원이 꺼지면 데이터를 잃는다. ++컴퓨터는 물론 다른 메모리형식도 사용한다. 우선 boot..

Operating System - 컴퓨터 시스템 구조 [운영체제]

우선 컴퓨터 시스템이 어떻게 구성되어 있냐 보자면 1개 이상의 CPU, common bus에 연결된 수많은 device controllers *bus는 components와 memory를 공유한다. 이렇게 생겼다. device controller 는 local buffer storage, special-purpose registers 를 가지고 있다. 얘는 device와 local buffer 사이의 데이터 이동을 맡고있다. 보통 device driver를 device controller마다 가지고 있다. 얘는 device와 OS간의 다리 역할을 한다고 보면 되겠다. OS가 직접 device를 접근하는 것이 아닌 Instruction을 보내면 Controller가 작동한다. 쉽게 말하면 OS가 devic..

728x90
반응형