본문 바로가기

운영체제

운영체제 : File-System File : 연속적이고 논리적인 주소 공간 파일 형식을 알려주는 명령어 : file 리눅스의 파일 형식 : elf File attributes ls -l 로 볼 수 있는 정보 파일 이름 접근 권한 파일 위치 파일 사이즈 파일 생성일 파일 형식 파일 식별자 Inode (File control Block - FCB) sblock 하나의 크기는 4KB 파일을 open 해서 현재 디렉토리에 있다면 아이노드를 가져온다. Mount : 유저에게 파일 시스템이 보이도록 만드는 것 운영체제가 들어있는 파티션 = default partition 다른 파티션을 만들려면 마운트 해야한다. 루트를 통해 다른 파티션으로 접근 가능! No Cycle Garbage Collection : 더 이상 사용하지 않는 객체를 청소해 메모.. 더보기
운영체제 : I/O System Device drivers 장치는 세부 정보를 캡슐화한다 → I/O 하위 시스템에 균일한 장치 엑세스 인터페이스를 제공한다. 컴퓨터 시스템은 I/O 디바이스와 CPU를 동시에 실행한다. CPU Memory : Read,Write CPU I/O Input, Output H/W register 레지스터 : 회로 안에 있는 아주 작은 저장공간 명령어 레지스터 상태 레지스터 데이터 레지스터(buffer) : 일반 데이터가 저장되는 레지스터 system bus 컴퓨터의 구성요소를 서로 연결하고 데이터를 전달하는 데에 사용하는 경로이다. 주소버스 메모리의 주소나 I/O Unit의 포트번호 전달 데이터버스 데이터 전달 제어버스 제어 신호 전달 (1) CPU ↔ Memory : Load and Store (2) CPU.. 더보기
운영체제 : Main Memory 코딩하는 여러 단계에서 주소가 다르게 나타난다. Basic Hardware CPU는 레지스터를 참조하며 메모리 공간을 보호하며, 레지스터 정보는 PCB에 담겨있다. 이때 레지스터는 base와 limit로 나뉨 base 프로세스가 메모리에서 사용할 수 있는 가장 작은 physical address limit : 사용할 수 있는 주소의 범위 프로세스가 사용할 수 있는 가장 큰 주소 base+limit Address Binding Schemes(데이터 타입이 언제 결정되나) Compile time binding scheme : 컴파일타임때 주소 바인딩 Load time binding scheme : 로드 타임 때 주소 바인딩 Execution time binding scheme : 실행할 때 주소 바인딩 소스.. 더보기
운영체제 : Deadlocks System Model 프로세스는 자원을 요청 사용 해제 Deadlock 발생 조건 Deadlock : 두개 이상의 스레드가 절대 일어나지 않을 이벤트를 기다리는 상황 동시에 실행하는 스레드의 개수가 많을수록 발생 가능성이 높아진다. Mutual exclusion (상호 배제) : 동시에 임계 영역에 진입하는 것 방지 Hold-and-Wait : 하나를 가지고 있으면서 자원을 기다리고 있는 것 No preemption for resource : 비선점 Circular wait : 환형 대기 Deadlock Prevention circular wait 해소 : 자원 할당 등수를 정하자 → 효율 떨어짐 Deadlock Avoidance 교착상태가 발생할 것 같은지 Dynamic하게 조사해야 한다. safe .. 더보기
운영체제 : Synchronization Background 동시에 여러 개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황을 경쟁 상황 이라고 한다. → 실행 순서를 결정하는 것은 OS의 스케줄링 임계영역(Critical Section) 문제 코드 상에서 경쟁 조건이 발생할 수 있는 특정 부분을 임계영역이라고 한다. 이 코드는 전역 변수 counter에 1을 더하는 과정이다. 우선 메모리에 있는 전역 변수를 가지고 와서 레지스터에 넣는다. 레지스터 값을 1 증가시키고 증가시킨 값을 다시 메모리에 로드한다. (메모리에 있는 값을 바로 증가하는 것이 아님!) 스레드1이 전역변수의 값을 레지스터로 옮기고 값을 1 증가시킨 순간 interrupt가 수행되고 제어 흐름이 스레드 2로 전환되었다. .. 더보기
운영체제 : CPU 스케줄링 간단 정리 CPU 사용률을 최대화하기 위해서 스케줄링이 필요하다 보통 입출력 작업이 CPU 작업보다 높은 빈도로 발생하지만 runnig 시간을 짧다! → Large number of short burst → Small number of longer burst 선점vs비선점 nonpreemptive(비선점) : 프로세스가 스스로 다음 프로세스에게 자원을 내놓는 방식 Preemptive (선점) : 운영체제가 강제로 프로세스의 사용권을 통제하는 방식 → CPU에 프로세스가 할당되어 있을 때도 다른 프로세스에게 CPU를 할당할 수 있다. Dispatcher CPU 스케줄링 기능에 포함된 요소 한 프로세스에서 다른 프로세스로 문맥을 교환하는 일 사용자 모드로 전환하는 일 프로그램을 다시 시작하기 위해서 사용자 프로그램의 .. 더보기
운영체제 : Thread 란? 스레드는 스레드id, pc, 레지스터 집합, 그리고 스택으로 구성 스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터, 운영체제 자원들을 공유한다. stack은 각각의 스레드가 갖고있다. 데이터를 공유하려면 data,heap을 사용해야 함 각각의 스레드는 PCB에 고유의 PC, register 값을 가진다 → 프로세스 간의 문맥교환보다 스레드의 문맥 교환이 훨씬 빠르다. 요즘 어플리케이션은 모두 멀티스레드 사용 프로세스 생성은 heavy-weight 오버헤드가 큼, 스레드 생성은 light-weight 과거에는 스레드를 경량 프로세스라고 불렀음 → 스레드 생성하는 것이 훨씬 효율적임!! 멀티스레드 서버 구조 (1) 클라이언트가 서비스할 스레드에게로 요청 전달 (2) 요청을 수행하기 위해 새로운 스.. 더보기
운영체제 : Process란? (개념, 용어 정리) 프로세스란? 실행 중인 프로그램. 프로그램은 실행 가능한 파일이 메모리로 로드되면 프로세스가 된다. 하나의 프로그램은 여러 개의 프로세서가 될 수 있다. 프로세서가 한개라면 실행중인 프로세스는 한 개 이상 있을 수 없다. multi-programming의 목적은 CPU utilization을 최대화하기 위하여 항상 어떤 프로세스가 실행되도록 하는 것이다. Process in Main Memory text section : 프로그램 코드. Data section : 전역변수 Stack : 함수, return address, 지역변수 등.. 위에서 아래로 내려온다 Heap : 동적 할당 메모리 프로세스 상태(Process State) 프로세스는 실행되면서 상태가 변화한다. (1) New : 프로세스가 생성 .. 더보기