728x90

Operating System 10

10. Process Synchronization

1. 데이터의 접근 데이터는 보통 한 공간에서 저장과 연산이 이루어지지 않고 S(Storage)-Box와 E(Execution)-Box로 나뉘어 저장과 연산을 하는 공간이 구분되어 있다. E-box와 S-box의 대응 관계의 예시 CPU-Memory : multiprocessor system에서 process synchronization 문제가 발생할 수 있다. 컴퓨터내부-디스크 프로세스-그 프로세스의 주소 공간 : 공유메모리를 사용하는 프로세스들 사이에서, 또는 커널 내부 데이터를 접근하는 루틴들 사이에서 process synchronization 문제가 발생할 수 있다. 이로 인해 만약 S-box를 공유하는 E-box가 여럿 있는 경우 Race Condition의 가능성이 있다. Race Condit..

운영체제 2021.10.11

9. 웹캐싱 기법

1. 웹캐싱 캐싱 기법은 저장장치 계층 간의 속도 차이를 완충시켜주기 위해 컴퓨터 구조, 운영체제, 데이터베이스 등의 분야에서 각각 캐시 메모리, 페이징 기법, 버퍼링 기법 등으로 널리 연구되어왔다. 웹의 보편화와 컨텐츠 전송 네트워크 서비스의 활성화로 원격지의 객체를 캐싱하는 기법의 중요성이 커지고 있다. 웹캐싱 : 웹 사용자에 의해 빈번히 요청되는 데이터를 사용자와 지리적으로 가까운 웹캐시 서버에 보관해 빠른 서비스를 가능하게 하는 기법 웹캐싱 기법은 웹서버 또는 웹 사용자 차원에서의 캐싱 뿐 아니라 웹캐싱만을 전담하는 프락시서버에 의해 광범위하게 이루어지고 있다. 웹서버 쪽에는 역방향 프락시캐시가 사용되는데, 이는 일개 그룹에 속한 웹서버의 객체들을 캐싱하여 서버의 부하를 직접적으로 줄여 웹 사용자..

운영체제 2021.04.29

8. 디스크 관리

1. 디스크의 구조 논리 블록(logical block) : 디스크에 데이터를 저장할 때 일정한 크기의 저장 공간 단위 논리 블록에 저장된 데이터에 접근하기 위해서는 배열을 접근하는 것처럼 해당 블록의 인덱스 번호를 디스크에 전달해야 한다. 섹터(sector) : 각 논리 블록이 저장되는 디스크 내 물리적인 위치. 즉, 논리 블록 하나가 섹터 하나와 1대1로 매핑되어 저장된다. 트랙(track) : 디스크의 물리적인 구조에서 마그네틱의 원판을 구성하는 하나의 원. 각 트랙은 섹터로 나뉜다. 실린더(cylinder) : 여러 개의 원판에서 상대적 위치가 동일한 트랙들의 집합 디스크에 데이터를 읽고 쓰기 위해서는 암(arm)이 해당 섹터가 위치한 실린더로 이동한 후 원판이 회전하여 디스크 헤드가 저장된 섹터..

운영체제 2021.04.28

7. 가상메모리

1. 요구 페이징 요구 페이징(demand paging) : 프로그램 실행 시 프로세스를 구성하는 모든 페이지를 메모리에 올리지 않고 당장 사용될 페이지만을 올리는 방식 이를 통해 응답시간을 단축시킬 수 있고, 더 많은 프로세스를 수용할 수 있다. 요구 페이징 기법의 주된 효용은 프로그램이 물리적 메모리의 용량 제약을 벗어날 수 있도록 한다는 점이다. 요구 페이징에서는 유효-무효 비트를 두어 각 페이지가 메모리에 존재하는지 표시한다. 유효-무효 비트가 무효로 세팅되어 있는 경우를 페이지 부재(page fault)가 일어났다고 말한다. CPU가 무효 페이지에 접근하면 MMU가 페이지 부재 트랩을 발생시킨다. 그러면 CPU의 제어권이 커널 모드로 전환되고 운영체제의 페이지 부재 처리루틴이 호출되어 다음과 같..

운영체제 2021.04.27

6. 메모리 관리

1. 주소 바인딩 논리적 주소 : 프로세스를 위한 독자적인 주소 공간으로 0번지부터 시작한다. 물리적 주소 : 물리적 메모리에 실제로 올라가는 위치. 일반적으로 운영체제는 메모리의 낮은 주소 영역에 올라가고, 사용자 프로세스들은 높은 주소 영역에 올라간다. 주소 바인딩(address binding) : 프로세스의 논리적 주소를 물리적 메모리 주소로 연결시켜주는 작업 주소 바인딩의 방식은 프로그램의 물리적 메모리의 주소가 결정되는 시기에 따라 세 가지로 분류할 수 있다. 컴파일 타임 바인딩(compile time binding) : 물리적 메모리 주소가 프로그램을 컴파일할 때 결정되는 주소 바인딩 방식 프로그램이 절대주소로 적재된다는 뜻에서 절대코드를 생성하는 바인딩 방식이라고 말하기도 한다. 컴파일 타임..

운영체제 2021.04.27

5. CPU 스케쥴링

0. CPU 기본 CPU의 기계어 명령에는 크게 CPU 내에서 수행되는 명령, 메모리 접근을 필요로 하는 명령, 입출력을 동반하는 명령으로 나눌 수 있다. CPU 내에서 수행되는 명령의 예로는 레지스터에 있는 두 값을 더해 레지스터에 저장하는 Add 명령이 있다. 메모리 접근을 필요로 하는 명령으로는 Load 명령과 Store 명령이 있다. Load 명령은 메모리에 있는 데이터를 CPU로 읽어들이는 명령이고, Store 명령은 CPU에서 계산된 결과값을 메모리에 저장하는 명령이다. CPU 내에서 일어나는 명령이나 메모리를 접근하는 명령은 소요 시간이 비교적 짧고, 일반명령에 해당한다. 입출력을 동반하는 명령은 오랜 시간이 소요되고, 특권명령이다. 프로그램의 수행은 크게 두 단계로 나뉜다. CPU 버스트(..

운영체제 2021.04.25

4. 프로세스 관리

1. 프로세스의 개념 프로세스(process) : 실행 중인 프로그램(program in execution) 일반적으로 잡(job)이라는 용어와 프로세스를 혼용해 사용하기도 한다. 프로세스의 문맥(context) : 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보 프로세스는 시작해서 종료할 때까지 CPU에서 명령을 한꺼번에 수행하지 않고 시분할 시스템에 의해 짧은 시간 동안 반복해서 수행된다. 이때 명령의 수행을 재개하는 경우 직전 수행 시점의 정확한 상태를 재현하기 위해 문맥이 필요하다. 프로세스의 문맥은 그 프로세스의 주소 공간, 레지스터에 어떤 값을 가지고 있었는지, 시스템 콜 등을 통해 커널에서 수행한 일의 상태, 그 프로세스에 관해 커널이 관리하고 있는 정보 등을..

운영체제 2021.04.24

3. 프로그램의 구조와 실행

1. 프로그램의 구조와 인터럽트 프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야 한다. 프로그램의 주소 영역은 크게 코드, 데이터, 스택 영역으로 구분된다. 코드(code) : 프로그램 함수들의 코드가 CPU에서 수행할 수 있는 기계어 명령어 형태로 변환되어 저장되는 부분 데이터(data) : 전역 변수 등 프로그램이 사용하는 데이터를 저장하는 부분 스택(stack) : 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소와 데이터를 임시로 저장하는 데 사용되는 공간 프로그램은 제일 처음 메인함수에서 실행을 시작해 메인함수가 다른 함수를 호출하면 스택에 메인함수의 현재 실행 시점을 저장하고 다른 함수의 코드로 점프해 그 함수를 실행한다. 이후 ..

운영체제 2021.04.23

2. 컴퓨터 시스템의 동작 원리

1. 컴퓨터 시스템의 구조 컴퓨터 시스템은 컴퓨터 내부장치인 CPU, 메모리와 컴퓨터 외부장치인 디스크, 키보드, 마우스, 모니터, 네트워크 장치 등으로 구성된다. 입력 : 컴퓨터 내부로 데이터가 들어오는 것 출력 : 컴퓨터 외부 장치로 데이터가 나가는 것 컴퓨터는 외부장치의 데이터를 입력받아 각종 연산을 수행한 후 그 결과를 출력한다. 컴퓨터 외부장치는 입출력 장치라고도 부른다. 디스크 역시 디스크에서 내용을 읽어 컴퓨터에서 연산을 한 뒤 디스크에 데이터를 저장한다면 컴퓨터 입장에서 입출력이 일어난 것으로 볼 수 있다. 2. CPU 연산과 I/O 연산 입출력 장치들의 I/O 연산은 입출력 컨트롤러가 담당하고, 컴퓨터 내 연산은 메인 CPU가 담당하므로 동시 수행이 가능하다. 로컬 버퍼(local buf..

운영체제 2021.04.22

1. 운영체제 개요

1. 운영체제의 정의 운영체제 : 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어로 하드웨어를 작동시키기 위해서 반드시 필요한 기본적인 소프트웨어를 말한다. 운영체제도 소프트웨어이므로 컴퓨터 시스템에서 실행되기 위해 메모리에 올라가야 하는데, 운영체제는 규모가 큰 프로그램이므로 전부 메모리에 올라갈 수 없다. 그래서 항상 필요한 부분만 메모리에 올리고 그렇지 않은 부분은 필요할 때마다 메모리에 올려 사용한다. 이 때 메모리에 상주하는 운영체제의 부분을 커널(좁은 의미의 운영체제)이라고 한다. 즉, 커널은 운영체제 코드 중 핵심적인 부분을 뜻한다. 이에 반해 넓은 의미의 운영체제는 커널뿐만 아니라 시스템을 위한 유틸리티들을 광범위하게 포함하는 개념이다. 파일을 복사하는 프로그램 등이 이에 해당한다. 2. 운..

운영체제 2021.04.20
728x90