강의 목표 > 운영체제란 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로 컴퓨터 시스템의 필수적 부분 우리는 운영체제 설계자 입장에서 이해 (어떻게 만들어졌는가, 무슨 역할을 하는가) 운영체제 예) 마이크로소프트 윈도우즈, 리눅스 위의 안드로이드 운영체제란? 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는...
운영체제는 자원 관리자 사용자가 편리하게 사용할 수 있게 하는 인터페이스 CPU 스케줄링 큐에서 프로그램이 기다리고 있는 상황 운영체제는 어떤 프로그램에게 사용권 줄 것인가? 도착 시간은 편의상 초 셋이 전부 0초에 도착 CPU 쓰다가 디스크 입출력 요청을 기다리고 끝나면 다시 CPU 얻는다 대부분 프로그램은 입력 > 연산 > 출력을 반복 FCFS ...
운영체제 좁은 의미 커널 운영체제 가장 핵심적 부분 항상 메모리에 상주하는 부분 넓은 의미 각종 주변 시스템 유틸리티를 포함한 개념 메모리에 상주하는 부분은 아니다 일종의 독립적 실행파일 자원관리에서 가장 중요한 것은 최대 성능을 내는 효율성 하지만 지나치게 차별을 주는 것은 안된다 컴퓨터의 두뇌는 사실 운영체제 CPU는 ...
컴퓨터 시스템은 무엇이고 그 위에서 프로그램이 어떻게 돌아갈까? 📍 컴퓨터 시스템 구조 CPU와 메모리로 구성된 컴퓨터 내부와 I/O장치로 구성된 컴퓨터 외부로 구성 전원키면 운영체제가 메모리에 항상 상주 (그림에서 흰색) 프로그램 실행시키면 프로그램이 메모리에 올라가서 프로세스가 된다 (그림에서 메모리 내 분홍, 파랑색) 각각의 작은 I/O컨트롤러도...
📍 프로그램의 실행 프로그램 실행하면 메모리에 올라가서 프로세스가 된다 운영체제 커널은 기본적으로 메모리에 올라가있다 (핵심) 버추얼 메모리 중간에 한 단계 더 있는 것 독자적인 주소 공간이 만들어진다 (각 프로그램의 머릿속에 존재) 각 프로세스만의 주소 버츄얼 메모리 공간 3개 코드 실행 파일에 있던 코드가 올라옴 (실행할 기계어) 데이터 전역 변...
*fork의 리턴으로 부모는 자식의 pid 값이 넘어오고, 자식은 0이 넘어오기 때문에 서로 다른 일을 할 수 있다 exec() > 하나의 프로세스를 완전히 새로운 프로세스로 덮어씌운다 execlp() > 프로그램을 완전히 새로운 프로그램으로 덮어씌우는 역할을 한다 누군가가 만든 독립적인 프로그램 끝나고 원래 프로그램으로 되돌아오지 않는다 뒤에 어떤 코...
스케줄링 알고리즘 FCFS > 선착순 nonpreemptive: 먼저 도착했으면 다 쓰고 나갈 때까지 기다려줌 프로세스 3개가 있다면 도착한 순서에 따라 먼저 도착한 P1에 먼저 준다 => 평균 기다리는 시간 17초 앞에 사용시간 긴 프로세스가 들어오면 전체 대기 시간이 길어진다 콘보이 이펙트 : 숏 프로세스 비하인드 롱 프로세스 롱 프로세스가 먼
멀티 프로세서 스케줄링 (제약 조건이 있는 환경: CPU가 여러 개 있는 환경) 병렬적으로 돌아간다 스케줄링이 조금 더 복잡해진다 어떤 작업은 반드시 특정 프로세스에서 수행되어야 한다 (화장실 한 칸 있다가 여러 칸으로 늘어난 경우, 은행창구에 직원이 여러명인데 번호표를 뽑는 것) 여러 CPU들이 있는 상황에서 여러 CPU가 균형있게 골고루 일을 하게 ...
크리티컬 섹션 문제 > 크리티컬 섹션은 공유 데이터를 건드리는 코드 이 예시에서는 공유 데이터를 각 프로세스가 접근하는 코드를 크리티컬 섹션이라고 부른다 공유 데이터에 한 프로세스가 접근할 때는 다른 모든 프로세스가 크리티컬 섹션에 못들어가게 해야한다 크리티컬 섹션 들어가기 전에 락을 걸어서 다른 프로세스의 접근을 막는다 나갈 때는 lock 풀...
프로세스 동기화 공유 데이터에 여럿이 동시에 접근할 때, 데이터를 읽어서 수정하고 다시 저장하는게 원자적으로 수행되지 않고 연산 도중에 CPU 빼앗겨서 넘어갔을 때 생기는 문제를 다루고 있다. > 데이터를 읽고, 수정하고, 저장하는 연산이 CPU에서 한번에 수행되게 하고 중간에 CPU 빼앗기지 않게 하는 방법을 통해 해결이 가능하다 Semaphores ...
교착상태 > 시스템 안의 자원들이 각각 자원을 가지고 있으면서 다른 자원을 기다리고 있기 때문에 진행이 불가능한 상태인 데드락 P0은 A를 얻고 빼앗기고 P1은 B를 얻고 빼앗긴다 (자원은 세마포어같은 소프트웨어 자원일수도 하드웨어 자원일 수도 있다) 1번 프로세스 A, 2번은 B 가지고 안내놓으면 영원히 진행 안되는 데드락이 발생한다 데드락 원인 ...
메모리 > 주소를 통해 접근하는 장치 메모리 주소 2종류 로지컬 어드레스 논리적 주소 피지컬 어드레스 물리적 주소 물리적 메모리 물리적 주소 0번지부터 시작 낮은 주소는 운영체제 높은 주소는 여러 프로세스들 사용자 프로그램은 디스크 실행파일에서 메모리에 올라가서 프로세스가 되는 것 여기서 한 단계를 더 거치는데 프로...
물리적 메모리관리에서 연속과 불연속 할당이 존재 불연속 할당 - 페이징 기법 프로세스 구성하는 주소공간이 동일 크기의 페이지 단위로 쪼개져있다 각 페이지는 서로 다른 물리적 메모리 위치에 올라갈 수 있다 당장 필요한 부분은 올려놓고 그렇지 않은 부분은 backing 스테이지, swqp area (보조기억장치)에 내려놓고 쓰게 된다 물리적 메모리도...
물리적 메모리의 주소변환은 운영체제가 관리하지 않는다 하지만 가상메모리 기법은 운영체제가 관여 디맨드 페이징 > 요청이 있을 때 페이징을 메모리에 올린다 페이징기법 사용한다고 가정 (대부분이 페이징 사용) 한정된 메모리 공간에 의미있는 것을 올려놓자 효과 I/O 양이 줄어든다 필요한 것만 메모리에 올릴 수 있다 물리적 메모리 사용량 감소...
물리적 메모리 관리는 다음 챕터의 가상 메모리 관리와 대비되는 측면이 있다 물리적 메모리 관리 사실 운영체제가 하는 일이 아니다 여기서 가장 중요한 것은 주소 변환(하드웨어가 함) 각 프로세스마다 논리적 메모리, 가상메모리가 있고 물리적 메모리에 올라가서 실행된다 CPU가 각 프로세스의 논리적 주소를 가지고 메모리 내용을 달라고하면 주소변환이 되어 물리적 ...
파일과 파일 시스템 파일은 하드디스크에 저장하는 단위 메모리는 주소를 통해 접근하는 장치 파일 이름을 통해 접근 파일은 비휘발성의 보조기억장치에 저장 (하드디스크 등) 운영체제에서는 장치들을 관리하기 위해 file 이름 사용 (일반 파일과는 다르다) 파일 연산 생성 삭제 읽고 쓰기 (대표적) 리포지셔닝 (lseek) 어느 ...
디스크 스케줄링 하드디스크 내부는 그림처럼 구성 여러 개의 원판, 마그네틱 매체에 실제 데이터가 저장되어있는 구조 여러 원판은 여러개의 동심원(track)으로 구성되어있다 각각의 트랙은 작은 조각인 섹터로 나뉘어져있다 섹터는 내부에서 데이터 저장하는 최소 단위 실린더는 같은 트랙에 있는(같은 동심원 상)에 있는 것을 서로 ...