Computer Science/운영체제 7

[OS] 메모리 관리

이화여대 반효경 교수님의 강의를 보며 정리했습니다. 결론은 메모리관리 영역에서 가상메모리나 swap부분을 제외하고 운영체제의 역할은 미미하다는 것. 메모리접근, 물리 주소 할당등은 MMU나 TLB의 영역이라는 것. 메모리관리 메모리접근, 주소 변환에서 운영체제의 역할은 하나도 없음 전부 하드웨어의 영역. 운영체제는 I / O 접근만 관여함. 주소 논리 주소(Logical Address = virtual address) 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0번지부터 시작 CPU가 보는 주소는 logical address임 물리 주소(Physical address) 메모리에 실제 올라가는 위치 주소 바인딩 : 주소를 결정하는 것. Symbolic Address -> Logical Add..

[OS] 리눅스의 메모리 관리

10분 테코톡 시청 후 작성했습니다. https://www.youtube.com/watch?v=qxmdX449z1U 리눅스란? 리누스 토르발스가 개발한 OS 자유 소프트웨어와 오픈 소스 개발의 표본 다중 사용자, 다중 작업(멀티 테스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS) 즉 서버에 적합한 운영체제이다. 메모리란? 넓은 의미로 기억 장치 전부 좁은 의미로 메인 메모리(RAM) 컴퓨터의 유일한 작업공간.(프로세스는 cpu에서 실행x 반드시 메모리에 적재 후 실행 가능) 주소덩어리이며 주소로 인덱싱하는 커다란 배열. 컴퓨터가 켜지면 메모리에 운영체제나 프로세스들이 적재되고 CPU를 점유할 기회를 노림. 메모리의 코드 -> 컴파일러(코드 주소 결정) -> CPU Symbolic Address..

[OS] 가상 메모리(Virtual Memory)와 페이징

가상메모리(VM != Virtual Machine) 다중 프로그래밍 = 많은 프로세스를 동시에 메모리에 올려야함. 프로세스 전체가 메모리에 올라오지 않더라도 실행이 가능하도록 하는 기법. 물리 메모리보다 프로그램이 커도 된다. 메모리 오버레이 기법에서 나머지를 관리하기 위한 공간 보통 SSD로 C드라이브가 아닌 D드라이브 등에 가상메모리를 설정하는게 좋음. 만약 C가 SSD고 D가 HDD면 그냥 C에 설정. 윈도우 가상메모리 파일 이름은 pagefile.sys 개발 배경 가상메모리 이전 : 모든 코드는 물리메모리에 존재. 메모리 용량보다 큰 프로그램 실행 불가. 용량의 한계, 페이지 교체 등 성능이슈. 가끔 사용하는 코드가 항상 메모리에 올라올 필요 x 가상 메모리를 사용하면? 물리 메모리 크기에 제약 ..

[OS] 페이징과 세그멘테이션, 메모리관리

페이징과 세그먼테이션 기법을 쓰는 이유 다중 프로그래밍 시스템에 여러 프로세스를 수용하기 위해 주기억장치를 동적 분할하는 메모리 관리 작업이 필요해서 메모리 관리 배경 각각 프로세스 는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한있음. 운영체제 만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않음. Swapping : 메모리의 관리를 위해 사용되는 기법. 표준 Swapping 방식으로는 round-robin 과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장치(e.g. 하드디스크)로 내보내고 다른 프로세스의 메모리를 불러 들일 수 있다. 이 과정을 swap이라함. 주 기억장치(RAM)..

[OS] CPU Scheduling : 프로세스를 .CPU에 할당하는 방법들

CPU Scheduling 스케줄링 실행준비가 된 프로세스 중에서 하나를 선택해 CPU를 할당 하는 것. 결국 CPU를 잘 사용하기 위해 프로세스를 잘 배정하기 위함. 조건 : 오버헤드는 낮고, 사용률은 높고, 기아 현상은 낮을때. 목표 Batch System : 가능하면 많은 일을 수행한다. 시간(time)보다 처리량(throughout)이 중요하다. Interactive System : 빠른 응답 시간, 적은 대기 시간 Real-time System : 기한(deadline) 맞추기 선점 / 비선점 스케줄링 선점(preemptive) : OS가 CPU의 사용권을 선점 할 수 있는 경우, 강제 회수하는 경우 비선점(nonpreemptive) : 프로세스 종료 or I/O 등의 이벤트가 있을 때까지 실행..

[CS] Blocking vs Non-Blocking, Sync vs Async 제어권과 시간의 일치

멍토님, 우의님의 10분 테코톡 보고 작성했습니다 Blocking vs Non-Blocking, Sync vs Async 제어권(행동할수있는 권리, 행동할수 있는 시간)의 반환 결과값의 전달 (return) 1. Blocking vs Non-Blocking 제어할 수 없는 대상의 처리 방법. -Blocking : 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 *다른 작업이 끝날 때까지 *기다렸다가 자신의 작업을 시작하는 것 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하게 만든다 호출되는 함수가 바로 리턴하지 않으면 Blocking 호출한 함수가 제어권을 가지고있따가 function A에게 가서 제어권을 줌, 함수 시행 후 제어권에 결과값을 얹어서 호출..

[CS] Process vs Thread

우아한 테코톡 코다님의 Process vs Thread를 시청 후 작성하였습니다. Process vs Thread [이해해야하는 개념] -실행 단위 : cpu core에서 실행하는 하나의 단위. 프로세스와 스레드를 포괄하는 개념. -프로세스 : 하나의 스레드만 가지고 있는 단일 스레드 프로세스 -동시성 : 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것. 프로그램 프로세스(실행이 되어 실제 사용할 수 있는 무언가)가 되어야 레시피에서 피자가 될 수 있음. 그러기 위해선 두가지 과정이 필요. 1. 프로세스가 필요로 하는 재료들이 메모리로 올라가야함 (실행 명령을 포함하는 code, static 또는 global 변수 등 data, 동적 메모리 영역인 Heap..