728x90
반응형

컴퓨터(Computer Science)/운영체제(Operation System) 34

프로세스 스케줄링(Process scheduling)이란?

뭐 더 자세히 알아봐야겠지만 살짝 맛만보고가자 • Maximize CPU use, quickly switch processes onto CPU for time sharing • Process scheduler selects among available processes for next execution on CPU • Maintains scheduling queues of processes 다중 프로그래밍의 목적은 CPU의 이용을 최대화하려는 데에 있다. 시분할(TIme sharing)의 목적은 각 프로그램이 실행되는 동안 사용자가 상호 작용할 수 있도록 프로세스들 사이에서 CPU 코어를 빈번하게 교체하는 것이다, 이 2가지 목적을 달성하기 위해서 프로세스 스케줄러(process sceheduler)가 ..

프로세스(process)란 무엇인가? [운영체제]

쉽게 말하자면 프로세스란 실행 중인 프로그램을 말한다. 자세히 알아보자 운영체제의 주 목적은 사용자 프로그램을 실행하는 것이지만 커널 안에서 보다 사용자 공간에서 가장 잘 할 수 있는 다양한 시스템 작업을 할 필요가 있다. 그래서 하나의 시스템은 일부는 사용자 코드를 실행하고 나머지는 운영체제 코드를 실행하는 프로세스들의 집합체이다. 우선 그림을 보고가자면 이 그림은 프로세스 메모리 배치의 그림이다. **컴퓨터 구조에서 많이 봤다면 같은 것이다. 다시 말하겠다. 프로세스란 실행 중인 프로그램이다. 프로세스의 현재의 상태는 프로그램 카운터(PC) 값과 나머지 프로세서 레지스터의 내용으로 나타낸다. 1. Text: the executable code 실행 코드가 들어간다. 2. Data: global var..

Multiprogramming vs Multitasking 멀티프로그래밍과 멀티태스킹의 차이

한글로는 다중 프로그래밍, 다중 태스킹이라고도 하는데 사실 용어가 중요한 것이 아니라 개념이 중요한 것이니까 한 번 알아보자 하나의 프로그램으로는 CPU나 I/O 장치를 항상 바쁘게 할 수 없다. -> I/O 유휴상태가 발생한다 다시 말해서, 계속 작동하게 할 수 없다는 말이다. ++그래서 사람들이 생각했다. 그럼 사용 안하는 시간에 다른 프로그램도 돌릴 수 있지 않을까?? 그래서 한 번에 둘 이상의 프로그램을 돌리는 것이 바로 다중프로그래밍이다. (Multiprogramming) CPU가 항상 한 개의 프로그램을 돌릴 수 있게 해서 CPU의 이용률을 높인 것이다. ++ 한 프로그램이 이용안 할 때 다른 프로그램이 실행된다는 뜻이다. ** 우리는 Multiprogramming에서 실행중인 프로그램을 프로..

프로세스에서의 동기화 (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가..

728x90
반응형