일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 우아한 테크 세미나
- inflearn
- redis
- C++
- 우아한레디스
- 김영한
- Operating System.
- 스프링 입문
- OS
- Window-Via-c/c++
- 스프링 핵심 원리
- n타일링2
- 제프리리처
- 2475번
- FIFO paging
- 열혈 tcp/ip 프로그래밍
- 10026번
- BOJ
- 열혈 TCP/IP 소켓 프로그래밍
- C#
- Operating System
- Four Squares
- 토마토
- 윤성우 저자
- 운영체제
- TCP/IP
- Spring
- HTTP
- 에러핸들링
- 이펙티브코틀린
- Today
- Total
목록OS (24)
나의 브을로오그으

전통적 동기화 예제 - Producer and Consumer Problem * 생산자-소비자 문제 * 유한버퍼 문제 (Bounded Buffer Problem) - Readers-Writers Problem * 공유 데이터베이스 접근 - Dining Philosopher Problem * 식사하는 철학자 문제 Readers-Writers Problem - 공통 데이터베이스 * Readers : read data. never modify it. * Writers : read data and modify it * 상호배타 : 한 번에 한 개의 프로세스만 접근 - 비효율적 - 효율성 재고 * Each read or write of the shared data must happen withing a criti..

Producer-Consumer Problem - 생산자-소비자 문제 * 생산자가 데이터를 생산하면 소비자는 그것을 소비 * 예: 컴파일러 > 어셈블러, 파일 서버 > 클라이언트, 웹 서버 > 웹 클라이언트 (소스 코드를 컴파일러가 컴파일(생산)해서 어셈블리어 코드를 만들어내고 이를 어셈블러가 기계어로 번역(소비)해서 기계어 코드를 만들어 낸다.) - Bounded Buffer(유한 버퍼) * 생산된 데이터는 버퍼에 일단 저장 (속도 차이 등) * 현실 시스템에서 버퍼 크기는 유한 * 생산자는 버퍼가 가득 차면 더 넣을 수 없다. * 소비자는 버퍼가 비면 뺼 수 없다. (생산자-소비자 문제의 제일 핵심은 생산자는 버퍼가 꽉차있으면 더이상 생산을 하지 않고, 서비자는 버퍼가 비어있으면 더이상 소비하지 않는..

프로세스 동기화 - Process Synchronization * cf. Thread synchronization - Processes * Independent vs Cooperating * Cooperating process: one that can affect or be affected by other processes executed in the system * 프로세스간 통신: 전자우편, 파일 전송 * 프로세스간 자원 공유: 메모리 상의 자료들, 데이터베이스 등 * 명절 기차표 예약, 대학 온라인 수강신청, 실시간 주식거래 - Process Synchronization * Concurrent access to shared data may result in data inconsistency - Ex..

임계구역 문제 - The Critical-Section Problem - Critical Section * A system consisting of multiple threads * Each thread has a segment of code, called critical section, in which the thread may be changing common variables, updating a table, writing a file, and so on. (임계 영역은 다중 스레드로 이루어진 시스템) (임계 영역은 스레드가 갖고있는 코드 영역으로, 공통변수, 테이블 업데이트, 파일 쓰기 등의 변화를 가하는 영역(구간)) - Solution * Mutual exclusion (상호배타): 오직 한 ..

- Thread Concurrent vs Simultaneous : Concurrent는 굉장히 빠른 속도로 여러개의 쓰레드를 일정하게 실행함으로써 동시에 실행되는 것처럼 느껴지는것. Simultaneous는 진짜 동시에 실행되는 것. 해당 내용에서는 1 개의 CPU에서 동작하는것으로 가정하기 때문에 Concurrent이다. Thread vs Process - 한 프로세스에는 기본 1개의 쓰레드 * 단일 쓰레드 (single thread) 프로그램 - 한 프로세스에 여러 개의 쓰레드 * 다중 쓰레드 (multi-thread) 프로그램 - 쓰레드 구조 * 프로세스의 메모리 공간 공유 (code, data) * 프로세스의 자원 공유 (file, vo, ...) * 비공유 : 개별적인 PC, SP, regis..

Multilevel Queue Scheduling - Process groups * System processes * Interactive processes * Interactive editing processes * Batch processes * Student processes (프로세스마다 더 중요한 프로세스들(시스템 프로세스)이 있는데 Queue를 1개를 둔다면 다른 프로세스들이 하나의 Queue에 들어가는게 조금 않맞다. 따라서 프로세스 마다 들어가는 Queue 가 다르도록 해야 조금 더 중요한 프로세스들 부터 CPU 서비스를 받을 수 있도록) - Single ready queue -> Several separate queues * 각각의 Queue에 절대적 우선순위 존재 * 또는 CPU tim..

Shortest-Job-First - Example: AWT = (0 + 3 + 9 + 16) / 4 = 7msec * cf. 10.25 msec(FCFS) - Provably optimal (* 증명되어진 최적화 : 대기시간을 줄이는 방법으로써는 가장 최적화되어있다. 그러면 가장 베스트 방법이라는 건데 무조건 이걸 쓰면 될까?? 아쉽지만 밑에 말 처럼 비현실적인 방법이다. * 실제로는 Process가 실제 CPU Burst Time이 얼마인지 알 수 없다. 따라서 현실적인 방법이 아닌 이상적인 방법이다. 만약 이 방법을 적용하고 싶다면 CPU Burst Time을 예측 해서 해야한다. * 이런게 가능하려면 overhead가 적어야 한다. 과거의 작업 시간을 참고해서 예측이 가능하니까...) - Not ..

Context Switching(문맥전환) - Scheduler - Dispatcher (스케줄러가 선택한 process를 실행하도록, PCB에 저장된 process state, base, limit reg, pc, sp 등의 값을 현재 Processor의 SP, PC MMU의 레지스터 값 등의 context를 restore(복원)하거나 store(저장)하는 일을 Dispatcher가 함. Dispatcher는 OS내부 Process Management안에 있음.) (당연히 overhead가 있음. 부하가 있다는 말임. 자주 switching하는 작업 자체가 부하가 걸리는 작업임.) - Context switching overhead (그래서 overhead가 발생 할 수 있기에, OS설계 시 low l..

프로그램 vs 프로세스 (program vs process) - process, task, job ... - program in execution : (text + data + stack) area, pc, sp, registers, ... - 무덤 속 프로그램, 살아 움직이는 프로세스 프로세스 상태 - new, ready, running, waiting, terminated - 프로세스 상태 천이도 (process state transition diagram) - 상태 천이는 언제 발생? Process Control Block (PCB) - Task Control Block (TCB) - 프로세스에 대한 모든 정보 - process state (running, ready, waiting, termina..

CPU 보호 - 한 사용자가 실수 또는 고의로 CPU 시간 독점 * 예: while (n = 1) ... : 무한루프 * 다른 사용자의 프로그램 실행 불가 (이렇게 코드가 동작하면 무한루프를 돌기 때문에 하나의 프로세스가 CPU를 독점함) - 해결법 * Timer를 두어 일정 시간 경과 시 타이머 인터럽트 * 인터럽트 > 운영체제 > 다른 프로그램으로 강제 전환 (타이머를 설정해서 (가령 100ms) 이 시간을 초과하면 인터럽트를 발생시키고, CPU는 곧바로 ISR(Interrupt Service Routine)을 실행하고, 현재 유저 프로세스를 종료하고, 다음 유저 프로그램을 실행 할 수 있도록 함.) 정리 다중 프로그램 시스템 혹은 다중 유저 시스템에서 3가지 보호, 입출력장치 보호, 메모리 보호, ..