운영체제

    세마포 예제(Java)

    BankAccount Problem(은행계좌 문제) 세마포를 사용해 해결할 수 있는 문제는 Mutual exclusion(상호 배타)와 Ordering(순서를 어떻게할지) 이다. 다음 예제 코드를 통해 위 문제에 대한 세마포의 활용방법을 알아보자. 1. Mutual exclusion(상호 배타) : 한번에 한 쓰레드만 접근하도록 부모님은 은행 계좌에 입금; 자녀는 출금하는 예제이다. Thread를 상속받은 Parent와 Child 클래스를 만들어 BankAccount에 각각 입금, 출금을 반복해본다. public class Test { public static void main(String[] args) throws InterruptedException { BankAccount b = new BankAc..

    프로세스 동기화 도구 - 세마포

    1. 동기화 도구 종료 - Semaphors(세마포) : 가장 전통적인 동기화 도구 - Monitors - Misc. 2. Semaphores(세마포) 사전적 정의 : n. (철도의) 까치발 신호기, 시그널; (군대의) 수기 신호 세마포란 동기화 문제 해결을 위한 소프트웨어 도구를 말한다. 네덜란드의 Edsger Dijkstra가 제안했다. 구조 : 정수형 변수 + 두개의 동작(P, V) 동작 : P: Proveren(test) => acquire() V: Verhogen(increment) => release() 코드: 1) 일반적 사용(1) : Mutual exclusion(상호 배려) - sem.value = 1;

    프로세스 동기화

    1. 프로세스 동기화 프로세스 동기화는 쓰레드 동기화를 의미한다. 1) Independent process vs Cooperating process Cooperating process란 시스템 내 다른 프로세스와 영향관계에 있는 프로세스를 의미한다. - 프로세스 간 통신 : 전자우편, 파일전송 - 프로세스 간 자원공유 : 메모리 상의 자료들, 데이터베이스 등 - 예 : 명절 기차표 예약, 대학 온라인 수강신청, 실시간 주식거래 2) Cooperating process에서 동기화 문제 Concurrent access는 공유하는 데이터에 대해 데이터 정합성 문제를 일으킬 수 있다. 즉, 데이터 오류가 발생할 수 있다. 데이터 정합성이 유지되도록 Cooperating process의 실행 순서를 정해줄 필요가..

    프로세스 동기화

    1. 쓰레드(Thread) 쓰레드(Thread)란 프로그램 내부의 흐름, 맥을 의미한다. 1) Multithreads 다중 쓰레드(Multithreads)란 한 프로그램에 2개 이상의 맥이 흐르는 것을 말한다. 맥이 매우 짧은 시간 간격으로 빠르게 스위칭 되면 여러 맥이 동시에 실행되는 것처럼 보인다. (concurrent vs simultaneous; 한번에 하나만 처리되지만 마치 동시에 처리되는 것처럼 보이는 것을 concurrent라고 한다.) 예1: Web browser ; 화면 출력하는 쓰레드 + 데이터 읽어오는 쓰레드 예2: Word processor; 화면 출력하는 쓰레드 + 키보드 입력받는 쓰레드 + 철자/문법 오류 확인 쓰레드 그외) 음악 연주기, 동영상 플레이어, Eclipse IDE ..

    프로세스 생성과 종료

    1. 프로세스 생성(Process Creation) 프로세스는 프로세스에 의해 만들어진다! - 부모 프로세스(Parent process) - 자식 프로세스(Child process) cf. 형제 프로세스(Sibing process) : 같은 부모 프로세스에서 나온 자식 프로세스는 형제 프로세스이다. - 프로세스 트리(process tree) 1) Process Identifier(PID) Typically an integer number (0, 1, ...) : 0은 가장 처음 생성되는 프로세스이다. cf. PPID : 부모의 PPID (Parent PID) 2) 프로세스 생성 - fork() system call - 부모 프로세스 복사 - exec() - 실행파일을 메모리로 가져오기, 즉 실행파일을 메..

    CPU 스케쥴링 알고리즘(3) - Multilevel Queue Scheduling, Multilevel Feedback Queue Scheduling

    1. Multilevel Queue Scheduling 1) Process groups - System processes : o/s 프로세스(ex. 파일 읽기) - Interactive processes : 사용자 프로세스 (ex. 게임) - Interactive editing processes : 편집하는 프로그램 (ex. word) - Batch processes : 일괄적으로 처리하는 프로세스 - Student processes 2) Single ready queue - Several separate queues 위 그룹처럼 각각 성질이 다른 큐를 하나의 Ready Q로 처리하는 것은 무리가 있다. 왜냐하면 각기 다른 중요도를 갖고 있기 때문이다. 그래서 각 그룹 별로 여러개의 큐를 둔다. 각각의 ..

    CPU 스케쥴링 알고리즘(2) - SJF, Priority, Round-Robin

    1. SJF(Shortest-Job-First) SJF란 CPU 시간이 적게 드는 순으로 처리하는 스케쥴링 방식이다. 1) 특징 Probably optimal : AWT를 최소화하는데 가장 적합한 방법이다. Not realistic, prediction may be needed : 실제로 프로세스가 얼마나 CPU 시간을 사용할 지 모르기 때문에 비현실적인 방법이다. 그래서 CPU 시간이 얼마나 들지 예상해서 순서를 정해야 한다. Preemptive or Non-preeptive : 선점으로도, 비선점으로 구현할 수 있다. cf. Shortest-Remaining-Time-First(최소잔여시간우선) : Preeptive SJF 의 방법 중 하나이다. 2) Example 다음 프로세스를 SJF의 선점방식,..

    CPU 스케쥴링 알고리즘(1) - FCFS

    1. CPU Scheduing CPU 스케쥴링이란 메인 메모리에 올라와 있는 프로세스들이 CPU의 자원을 할당받기 위해 Ready Queue에 줄서있는 것을 말한다. 1) Preemptive vs Non-preemptive (선점 : 비선점) 실행 중인 프로세스를 도중에 끄고 스케쥴링하는 방법을 Preemptive라 한다. Non-preemptive 이면 하나의 프로세스가 모두 끝날때까지 다른 프로세스들은 계속 기다려야만 한다. 2) Scheduling criteria 어떤 스케쥴링 방식이 더 좋은가 판단하는 척도에는 다섯 가지가 있다. CPU Utilization(CPU 이용률) : CPU가 얼마나 놀지 않고 일하는가 Throughput(처리율) : 단위 시간당 몇개의 작업을 처리하는가 Turnarou..