\-S/w와 H/W가 있다.사용자 응용 프로그램과 컴퓨터 하드웨어 사이의 소프트웨어 계층이다.Interface 이다!!!(사용자가 H/W동작을 고려 안하게 한다.)=> 사용자가 시스템의 디테일을 몰라도 편하게 사용할 수 있게 Interface 해준다!Kernal이라고
Virtualization(가상화)cpu 가상화메모리 가상화Concurrency(병행성)스레드Persistence(지속성)파일 시스템입출력 장치많은 프로그램들이 동시에 실행하는 것처럼 느끼게 한다.실제 메모리는 바이트의 배열이다.보통 메모리는 DRAM이며 용량이 제한되
현대 컴퓨터 시스템의 프로토타입프로그램을 저장하는 컴퓨터이전에는 수행할 명령을 교체했다.프로세싱 유닛은 오직 메인 메모리랑만 소통 가능하다.프로세싱 유닛프로세서 레지스터와 논리 연산 유닛을 포함컨트롤 유닛인스트럭션 레지스터와 프로그램 카운터를 포함메모리데이터와 인스트럭
복습을 하자면CPUPC, 레지스터, condition CodesPC(program counter) - 다음 인스트럭션의 주소를 가지고 있다.레지스터 - 자주 사용되는 프로그램 데이터를 가지고 있다.Condition Codes - 최근 연산 정보에 대한 상태 정보를 저장
그러나 가상화를 구현하기 위해 몇가지 문제를 해결해야한다.성능저하시스템에 많은 오버헤드를 주지 않으면서 가상화를 구현 가능 한가제어 문제CPU에 대한 통제를 유지하면서 프로세스를 효율적으로 실행시킬 수 있는 방법이 있는가제어권을 상실하면 한 프로세스가 컴퓨터를 독점할
레디 큐에 속해있는 프로세스 중 어떤 것을 다음에 실행할것인가 / OS가 결정레디큐안에 cpu 권한이 없는 프로세스들이 들어가있음(나머지는 다 있음)multi programmed OS의 기초CPU 스케줄링 or 잡 스케줄링 이라고 불린다.(스레드 스케줄링)다양한 스케줄
fair-share(공정배분)이라고도 한다각 유저는 프로세서의 몫이 할당 된다CPU 사용시간을 일정량 얻을 수 있게 보장한다공정한 점유율보다 더 많은 자원을 가진 사용자에게 더 적은 자원을 제공하고 더 적은 자원을 가진 사용자에게 더 많은 자원을 제공하기 위해 사용량을
메모리에 오직 하나의 프로세스만 load추상화 없음하나의 프로세스가 전체 메모리를 사용했다.poor한 활용(utilization), 효율(efficiency)비싸고 낮은 유틸성EX0~64kb까지 OS가 사용, 나머지는 현재 프로그램이 사용메모리에 여러 프로세스를 loa
메모리는 바이트 배열각 프로세스에 대한 주소 공간의 허용 크기는 컴퓨터 아키텍처에 의해 결정만약 컴퓨터가 32비트 구조라면, 각 프로세스는 2^32 바이트의 주소 공간을 가질 수 있다.N-비트 구조에서, CPU의 레지스터는 N 비트를 저장 가능메모리 주소는 레지스터에
메모리 낭비free 공간이 실제 메모리에서 낭비된다.큰 주소공간에 대해서실제 메모리보다 큰 용량의 주소 공간은 지원할 수 없다.중복되는 코드 부분코드부분이 중복이 되면 메모리가 낭비가 된다.세그멘테이션으로 위의 문제를 해결할 수 있다.주소 공간을 조각 내 각 세그먼트들
할당, 할당해제를 위한 인터페이스를 가정할당 void\* malloc(size)요청한 바이트 수를 파라미터로할당한 메모리의 시작 주소를 return반환 void free(\*ptr)파라미터 해당 영역 해제해제한 영역의 크기와 같은 정보를 안줘내부 단편화는 없다고 가정오
페이징주소공간을 page라고 불리는 고정된 크기의 단위로 나눈다.세그멘테이션과 다르다.가변 크기의 세그멘트페이징을 하면, 실제 메모리는 page frame이라는 배열로 나뉜다.가상메모리에서 실제메모리로 변환이 필요하기 때문에 프로세스마다 page table이 필요하다페
MMU의 부분이다주소 변환 캐시이다.자주 참조되는 가상->실제 주소 변환 정보를 저장하는 하드웨어 캐시이다.가상 메모리 참조시, 하드웨어는 TLB에 원하는 정보가 있는지 본다있다면, 페이지테이블을 참조하지 않고 빠른 변환을 만들어 준다.완전 연관 방식으로 설계된다.VP
하나의 프로세스당 하나의 테이블을 가진다4KB 페이지, 32비트 주소 공간, 4바이트 PTE?페이지 테이블 사이즈 = 2^32/2^12\*4바이트 = 4MB(하나의 프로세스 당)페이지 테이블이 너무 크고 메모리를 너무 많이 잡아 먹는다페이지 크기가 4배 증가했으니 PT
모든 페이지들은 물리 메모리에 매핑되어야 한다많은 페이지들이 동시에 사용되어서 낭비다물리 메모리는 한정적이다현재 사용하는 페이지만 올리는 것이 효율적이다현재 사용하지 않는 페이지를 디스크로! Swapping 메모리가 한정적이니실제 메모리에 올라가지 않은 페이지들을 위
빈 메모리 공간이 부족하면OS는 메모리 압박을 해소하기 위해 다른 페이지들을 강제적으로 swap out해 사용중인 페이지들을 위한 공간을 확보한다OS는 어떤 기준으로 내보낼 페이지들을 선택하는가?victim 페이지는 교체 정책에 의해 결정된다FIFO랜덤LRU(least
싱글 프로세스의 새로운 개념한번에 하나의 명령어를 실행하는 관점에서 벗어나 하나 이상의 실행지점을 가짐다수의 실행 유닛을 가지고 프로그램을 실행한다쓰레드라고 불린다쓰레드들은 주소 공간을 공유하기 때문에 동일한 값에 접근할 수 있다스레드는 어디서 명령어를 가져올지 추적하
프로그래머들은 critical section을 락으로 둘러, 영역이 원자 단위 명령어인 것처럼 실행한다코드 실행은 인터럽트 및 스케줄링에 따라 서로 인터리브된다공유된 자원의 결과는 not deterministic하다=> 공유 자원 접근에서 인터럽트, 쓰레드의 자원 접근
mutex하나의 구간에 하나만 가능semaphore자신이 정한 개수만큼 스레드가 들어갈 수 있게 해줌정수 값을 가지는 객체두개의 루틴으로 조작할 수 있다sem_wait()sem post()세마포어를 사용하기 전 값을 초기화 해야한다sem_init()sem_wait()세
병행성 문제는 공통된 패턴을 가지고 있다공통적 병행성 문제정확한 병행적 프로그램을 작성하긴 어렵다non deterministic하다데드락 문제데드락이 아닌 문제원자적이지 않은 문제순서를 어기는 문제두개 이상 동작이 서로 기다리길 기다리는 상태시스템이 멈춘다각 스레드가