전체 (121) 썸네일형 리스트형 운영체제(9) - 고전적인 동기화 문제들 이전 포스팅에서는 동기화 도구인 Semaphores와 Monitor를 알아보았다 이번 포스팅에서는 고전적인 동기화 문제들 3가지를 살펴보겠다. Bounded- Buffer Problem ( Producer - Consumer Problem ,유한 버퍼 문제) 그림과 같이 버퍼가 존재한다고 가정하자 Producer, 생산자 프로세스는 공유 버퍼에 데이터를 하나 만들어서 넣는 역할 Consumer, 소비자 프로세스는 공유 버퍼에서 데이터를 꺼내는 역할 만약 둘 이상의 생산자가 버퍼를 동시에 보고 데이터를 만들어 넣는다면 문제가 발생할 수 있다. 마찬가지로 둘 이상의 소비자가 동시에 동일한 버퍼의 데이터를 사용한다면 문제가 발생할 수 있다. 그러므로 동시에 버퍼에 접근할 수 없도록 락을 걸어줘야 한다. 락을 .. 운영체제(8) -Semaphores ,Monitor Semaphores 정수 값을 가지며, 두 가지 연산인 P, V 연산에 의해서만 접근 가능한, 다중 프로그래밍 환경에서 공유 자원에 대한 접근을 제어하기 위한 동기화 도구 중 하나이다. Busy wait 방식 P(S) : while ( S 운영체제(7) - Race condition과 임계구역(Critical-Section problem) 공유 데이터 (Shared data)의 동시 접근(concurrent access)은 데이터의 불일치 문제(inconsistency)를 발생시킬 수 있다. 일관성 (consistency) 유지를 위해서는 협력 프로세스 (cooperating process)간의 실행 순서 (orderly execution)를 정해주는 메커니즘 필요 Race condition 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황 Memory를 공유하는 CPU가 여럿 있는 경우 Race condition의 가능성이 있음 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라짐 Race condition을 막기 위해서는 병행적으로 실행되는 프로세스는 동기화(Synchronize)되어야 한다 OS에서 race.. 운영체제(6) - CPU 스케줄링 CPU bound job CPU를 길게 쓰는 프로그램들 I / O bound job 입출력이 많은 작업들, 키보드 입력같은거 여러 종류의 JOB( = process)이 섞여 있기 때문에 CPU 스케줄링이 필요하다 CPU Scheduler Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다. Dispactcher CPU의 제어권을 CPU Scheduler에 의해 선택된 프로세스에게 넘긴다 이 과정을 context switch(문맥교환)라고 한다 CPU스케줄링이 필요할 때 Running - > Blocked ( 예 : I / O 요청을 위한 시스템 콜) - > 자진 반납 Running - > Ready ( 예 : 할당시간만료로 timer interrupt) - > 강제 Blocked - .. 운영체제(5) - 프로세스의 생성과 관련 시스템콜 프로세스 생성 부모 프로세스가 자식프로세스를 생성, fork() 시스템콜을 통하여.. 프로세스의 트리 ( 계층 구조 ) 형성 프로세스는 자원을 필요로 함 운영체제로부터 받는다 부모와 공유 자원의 공유 부모와 자식이 모든 자원을 공유하는 모델 일부를 공유하는 모델 전혀 공유하지 않는 모델 새로운 프로세스 생성시 수행 ( Execution) 상황 2가지 부모와 자식은 공존하며 수행되는 모델 자식이 종료( terminate)될 때까지 부모가 기다리는( wait ) 모델 새로운 프로세스 생성시 주소 공간( Address space) 상황 2가지 자식은 부모의공간을 복사함 자식은 그 공간에 새로운 프로그램을 올림 프로세스 종료 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려준다( exit ) - > 자.. 운영체제(4) - 스케줄러와 Thread 스케줄러 어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제의 모듈을 지칭한다. Long - term Scheduler ( Job Scheduler) 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정 프로세스에 memory를 주는 문제 Short - term Scheduler ( CPU Scheduler) 어떤 프로세스를 다음번에 running 시킬지 결정 프로세스에 CPU를 주는 문제 충분히 빨라야 함( millisecond 단위) Medium - term Scheduler ( Swapper) 여유공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄 프로세스에게서 Memory를 뺏는 문제, Suspended( Stopped) 라는 프로세스의 상태를 일으킬 수 있다. 외부적인 .. 백준 13907번(JAVA)-세금 2차원 DP를 활용한 다익스트라 문제이 import java.util.*; import java.io.*; class Node implements Comparable { int v; int w; int c; Node(int v,int w,int c) { this.v=v; this.w=w; this.c=c; } public int compareTo(Node o) { return w-o.w; } } public class Main { public static int[][] dp; public static int N; public static int S; public static int D; public static void main(String[] args) throws IOException{ // TODO.. 운영체제(3) - 프로세스 프로그램의 실행 커널 주소 공간의 내용 함수(function) 사용자 정의 함수 : 자신의 프로그램에서 정의한 함수 라이브러리 함수 : 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수, 자신의 프로그램의 실행 파일에 포함되어 있다 커널 함수 : 운영체제 프로그램의 함수, 커널 함수의 호출 = 시스템 콜 Process is a program in execution 프로세스는 실행중인 프로그램 프로세스 문맥이란? 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보 CPU 수행상태를 나타내는 하드웨어 문맥 Program counter 각종 register 프로세스의 주소 공간 code stack data 프로세스 관련 커널 자료 구조 PCB (Process Control Block.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 16 다음