Programming

    프로세스 동기화

    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..

    프로세스 관리 (Process Management)

    CPU 자원을 어떻게 효과적으로 나눠주는가 1. 프로세스 1) 프로세스의 정의 프로그램 vs 프로세스(program vs process) 프로세스(process)는 task, job으로도 불린다. 실행 중인 프로그램을 프로세스라고 한다.(program in execution : text+data+stack,pc,sp,registors...) => 무덤 속 프로그램, 살아 움직이는 프로세스 2) 프로세스 상태 프로세스 상태에는 new, ready, running, wating, terminated가 있다. New : 하드디스크에서 메인메모리로 프로그램이 올라온 상태 Ready : 프로세스가 초기화를 마치고 실행 준비 중인 상태 Running : 프로세스가 실행 중인 상태 Waiting : 프로세스가 I/O..

    M:N 관계

    M:N 관계 M:N 관계는 관계를 가진 양쪽 당사자 모두에서 1:M관계가 존재할 때 나타나는 모습이다. 학생과 과목의 관계를 예로 들 수 있다. 학생 입장에서는 여러 과목을 수강할 수 있고, 과목 입장에서 보면 여러 학생이 하나의 과목을 선택할 수 있다. 즉, 어느 쪽에서 봐도 다:다 관계가 성립된다. 이 관계는 선천적으로는 테이블과 테이블 사이에 특별한 관계가 없다. 각 테이블은 스스로 존재할 뿐이다. 그런데 이들 사이에 어떤 관계를 맺어 줌으로써 관계가 형성된다. 1. M:N 관계의 문제점 M:N 관계를 그림으로 그려보면 다음과 같다. 위 그림을 보면 각 테이블마다 PK가 존재하는 걸 볼 수 있다. 그러나 테이블 간의 관계가 성립되려면 PK 이외에도 FK가 존재해야 한다. FK를 생성한 테이블은 다음..