2.3.6 mutex 세마포어(단순버전) : 개수 세는 능력 필요 없을 때 empty : 데이터를 삽입하려면 빈 자원이 필요하므로 생산자가 사용가능한 자원의 수 확인 -> 0이면 대기 full : 데이터를 제거하려면 자원이 존재해야함 -> 0이라면 소비자는 대기 뮤텍스는 1, 엠프티는 N, full은 빈 슬롯의 개수. 뮤텍스는 언락과 락 둘 중 하나의 상태를 가짐. 0이면 언락, 다른 값이면 락. 우선순위 선점 스케쥴링에서 역전 현상 발생 : T3가 수행하고 있는데, t2시점에 락을 점유하게 됨. -> T1이 스케쥴링 -> T1실행하다가 락이 필요해짐 BUT T3가 이미 크리티컬 리전에 있기 때문에 상호 배제가 깨져서 T1은 어쩔 수 없이 잠듦. -> T2가 와서 T2가 수행, 이후 T3가 락을 푼 다음..
2.2.3 POSIX스레드 : 유닉스 표준, 여기서 정의한 스레드 패키지는 Pthreads라 불림. 2.2.4 Implementing Threads in User Space 과거 : 좌측처럼 유저레벨에서 thread만들어 쓰게끔 함. 커널엔 프로세스 테이블만 존재. 프로세스 별로 스케쥴링. 런타임 시스템 : 스레드 패키지에서 지원하는 라이브러리, 스레드 관리하는 프로시져들의 모음 : 안에 스레드 테이블을 갖고 있음. -> 프로세스가 커널에서 스케쥴링되어 실행되는 시점에 런타임시스템에서 스레드 3개중 하나를 골라 실행. : 스케쥴링 기능 O User level thread package : 프로세스 단위 CPU할당, 각 프로세스에서 스레드별로 나누어서 실행시켜주는 것 -> 비용 많이들고, 프로세스를 많이 ..
1.7 운영체제 구조 monolithic systems : 전 운영체제 이미지가 하나의 프로그램으로 커널 모드에서 실행. 메인 프로시져 : 서비스 함수들을 호출 서비스 프로시져 : 시스템 호출을 수행하는 서비스 함수들의 집합 유틸리티 프로시져 : 서비스 함수들을 돕는 유틸리티 함수들의 집합 유틸리티 프로시져 수정하려면 서비스와 메인 프로시져도 수정 필요 -> 코드가 방대해지고, 수정이 어려움 서비스 프로세스를 동작해야 하는데 재부팅 필요 -> 다운타임 발생 -> 경제적 손실 Layered system 운영체제를 계층별로 나누어 사용하자는 아이디어에서 출발, -> 실패 Micro kernels : MINIX 운영체제 그림. 커널의 핵심적인 기능만 아주 작게 담음. IPC : INter process com..
1.2 운영체제의 역사 1세대 : 진공관 2세대 : 트랜지스터 + batch 시스템 3세대 : IC 와 다중프로그래밍 - cpu는 연산이 빠르기 떄문에 입출력장치를 기다리게 된다 -> cpu는 놀게 되기 때문에 입출력장치가 job1 을 처리하는 동안 cpu는 job 2를 연산할 수 있고, 이 시점에 멀티 프로그래밍이 가능해졌다. - 이 때의 운영체제 중 MULTICS가 있는데, 보안코드가 많이 들어가 굉장히 느렸기에 상업적인 성공은 거두지 못함. 이후 UNIX로 발전 -pdf 11 / p12 4세대 : 개인용 컴퓨터. CP/M -> DOS -> MS-DOS -> GUI ... 1.3 하드웨어 복습 CPU는 메모리에서 명령(instruction)을 받아 실행하고, 결과를 다시 메모리로 반환. 모니터나 하드..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.