일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 스파르타코딩클럽
- BOJ1655
- 가운데를말해요
- 백준
- 윤곽선검출
- 2019카카오코테
- 냅색알고리즘
- 백준스택
- java
- BOJ
- 백준평범한배낭
- 코딩테스트실력진단
- KT포트포워딩
- 코드트리
- 카카오코테
- 백준9012
- 딥러닝
- 이것이자바다
- 운영체제
- 웹개발기초
- 컴퓨터비전
- 백준온라인저지
- 백준10828
- 확인문제
- 이것이자바다확인문제
- 이것이자바다9장
- 코테
- 백준가운데를말해요
- 합성곱연산
- 백준괄호
- Today
- Total
목록📀 운영체제 (23)
코딩하는 락커

6.7 모니터 mutex락과 세마포는 타이밍 오류를 야기할 수 있음 예시 모든 프로세스는 mutex라는 이진 세마포 변수를 공유함 mutex 변수의 초기값은 1 각 프로세스는 임계구역에 진입하기 전에 wait(mutex)를 실행해야 함 각 프로세스는 임계구역을 나올 때 signal(mutex)를 실행해야 함 가정 1) 예시 프로세스의 순서가 지켜지지 않을 경우 (wait()과 signal() 연산의 순서가 뒤바뀌는 경우) 두 프로세스가 동시에 임계구역에 있을 수 있음 (상호 배제 요구조건 위반) 예시 코드 signal(mutex); ... cirical section ... wait(mutex); 가정 2) signal(mutex)를 써야 할 곳에 잘못해서 wait(mutex)를 쓴 경우 세마포를 사용할..

6.5 뮤텍스 락Mutex Locks 임계구역에 대한 하드웨어 기반 해결책은 복잡하며 응용 프로그래머는 사용할 수 없음 대신 운영체제 설계자들은 임계구역 문제를 해결하기 위한 상위 수준 소프트웨어 도구들을 개발함 뮤텍스락 mutex lock 세마포어semaphore 모니터monitor 뮤텍스 락 가장 가장 간단한 형태의 소프트웨어 동기화 도구 mutual exclutison의 축약어 구현 프로세스가 임계구역에 들어가기 전에 반드시 락을 획득해야 하고, 임계구역을 빠져나올 때 락을 반환해야 함 acquire() 함수를 통해 락을 획득 release() 함수를 통해 락을 반환 acquire()과 release() 함수 호출은 원자적atomic으로 수행되어야 함 compare and swap을 사용하여 구현할..

6.3 Peterson의 해결안Peterson's Solution Dekker's Algorithm 2개의 프로세스를 위한 해결책 Eisenberg & Mcguire's Solution N개의 프로세스가 lower bound N-1 waiting time을 보장하는 해결책 Peterson의 해결안 critical section에 대한 고전적인 소프트웨어 기반 해결책 현대 컴퓨터 구조가 load & store 같은 기본적인 기계어를 수행하는 방식 때문에 이러한 구조에서 올바르게 수행한다고 보장할 수 는 없음 그러나 critical section 문제를 해결하기 위한 좋은 알고리즘적인 설명을 제공 상호 배제, 진행, 한정 대기의 요구 조건을 중점으로 다루는 소프트웨어 설계를 하는 데 필요한 복잡성을 잘 설명..

6.1 배경Background 프로세스가 병행concurrent 또는 병렬parallel로 실행될 때 여러 프로세스가 공유하는 데이터의 무결성에 문제가 생길 수 있음 생산자-소비자 문제 생산자: 버퍼에 새 항목을 초기화 할 때 마다 0으로 초기화 되어 있는 count 값을 1 증가함 소비자: 버퍼에서 한 항목을 꺼낼 때마다 0으로 초기화 되어 있는 count값을 -1 감소함 병행으로 수행할 경우 count의 값은 4나 5나 6이 됨 실습 예제1 코드 #include #include int sum = 0; void *run(void * param){ int i; for (i=0; i

라운드 로빈 스케쥴링, RR(Round-Robin-Scheduling) FIFO 알고리즘과 유사하지만 선점이 추가됨 타임 퀀텀time quantum 또는 타임 슬라이스time slice라고 하는 작은 단위 시간을 정의 레디 큐는 선입 선출 원형 큐로 동작 CPU 스케쥴러는 레디큐를 돌면서 한 번에 한 프로세스씩 한 번의 타임 슬라이스 동안 CPU를 할당함 CPU 스케쥴러는 레디큐에서 첫번째 프로세스를 선택해 한 번의 타임 슬라이스 이후에 인터럽트를 걸도록 타이머를 선정한 후 프로세스르 디스패치 함 두 가지 경우가 발생 가능 프로세스의 CPU 버스트가 한 번의 타임 슬라이스보다 작을 수 있음 이 경우 프로세스 자신이 CPU를 자발적으로 방출함 스케쥴러는 그 이후 레디큐에 있는 다음 프로세스를 진행함 현재 ..

5.1 기본 개념 CPU 스케쥴링은 다중 프로그램 운영체제의 기본이 됨 운영체제는 CPU를 프로세스 간에 교환함으로써 컴퓨터를 보다 생산적으로 만듦 다중 프로그래밍의 목적은 CPU 이용률 최대화 하기 위해 항상 실행중인 프로세스를 가지게 하는 것 CPU - I/O 버스트 사이클 프로세스 실행은 CPU 실행(CPU 버스트)과 I/O 대기(I/O 버스트)의 사이클로 구성됨 위 그림의 프로세스의 과정 CPU 버스트로 시작 I/O 버스트가 발생 또 다른 CPU 버스트가 발생 또 다른 I/O 버스트가 발생 ... CPU 바운드와 I/O 바운드 CPU 바운드: CPU 버스트가 많은 프로세스 I/O 바운드: I/O 버스트가 많은 프로세스 위 그림은 CPU 버스트의 지속 시간을 측정한 그래프를 나타냄 짧은 CPU 버스..

4.1 개요 스레드 Light weight process CPU 점유의 기본 단위 스레드 ID, 프로세스 카운터(PC), 레지스터 집합, 스택으로 구성됨 스레드끼리 열린 파일과 같은 운영체제 자원을 공유함 동기 클라이언트 - 서버 프로세스의 환경에서 웹 서버가 단일 스레드 프로세스로 작동하는 경우 한 번에 한 클라이언트만 서비스 할 수 있음 클라이언트는 request가 서비스 되기까지 오랜 시간 기다려야 함 2가지 해결책 요청을 수행할 별도의 프로세스를 생성하는 방법 서버에서 서비스 요청이 들어오면 그 요청을 수행할 별도의 프로세스를 생성하는 것 프로세스 생성 작업은 많은 시간을 소비하고 많은 자원을 필요로 함 비효율적 프로세스 안에 여러 스레드를 만들어 나가는 방법 서버는 클라이언트의 요청을 liste..

3.7 IPC 시스템의 사례 IPC 시스템의 두 가지 사례 공유 메모리를 위한 POSIX API 파이프 POSIX(Portable shared Memory for Unix) 공유 메모리 mamory-mapped 파일을 사용하여 구현됨 mamory-mapped 파일: 공유 메모리의 특정 영역을 파일과 연관시킴 사용하는 코드 fd = shm_open(name, O_CREAT | O_RDWR, 0666); name : 공유 메모리의 객체 이름 지정 O_CREAT | O_RDWR: 객체가 존재하지 않으면 생성되고 객체는 읽기와 쓰기가 가능한 상태로 열리는 것을 나타냄 0666: 공유 메모리 객체에 파일-접근 허가권 부여 ftruncate(fd, 4096) ftruncate: 객체의 크기를 바이트 단위로 설정 4..