본문 바로가기

CS/운영체제

(7)
[운영체제] 스와핑과 단편화 그리고 연속 메모리 할당을 알아보자 스와핑과 연속 메모리 할당 그리고 외부 단편화 개념을 알아보겠습니다. 1.가상 메모리란?가상 메모리는 메모리 관리 기법 중 하나로 물리적 메모리 한계를 뛰어넘기 위해 실제로 이용 가능한 메모리 자원을 추상화 하여 매우 큰 메모리로 인식하게 만든 것입니다.  이러한 가상 메모리 개념은 실행에 필요한 일부분만 메모리에 로드하고 나머지는 디스크에 두고서 필요할 때 마다 교체하면서 쓰는 방식으로 구현됩니다.물리 메모리 크기의 한계를 극복하기 위해 나온 기술실행에 필요한 일부분만 메모리에 올려두고 사용하는 기법 2.스와핑이란?운영체제가 사용하는 기본적인 메모리 관리 기법으로 현재 사용되지 않는 프로세스들을 보조 기억 장치의 일부 영역으로 쫓아내고, 그렇게 생긴 빈 공간에 지금 실행할 프로세스를 적재하는 것입니다...
[운영체제] OS의 주소공간 , 물리적 주소 ,논리적 주소 그리고 주소 바인딩을 알아보자 들어가기 전 CPU와 실행 중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되어 있는지 전부 알고 있을까? NO CPU와 실행 중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 전부 알지 못합니다. 왜냐하면, 메모리에 저장된 값들은 아래와 같은 상황으로 시시각각 변하기 때문입니다.- 새롭게 실행되는 프로그램은 새롭게 메모리에 적재 됨 - 실행이 끝난 프로그램은 메모리에서 삭제 - 같은 프로그램을 실행하더라도 실행할 때 마다 적재되는 주소는 다름  이러한 한계점을 극복하기 위하여 메모리 주소를 물리 주소와 논리 주소로 나누게 됩니다.우선 주소 공간 , 물리 주소 그리고 논리 주소에 대해 알아봅시다 주소 공간 ( Address Space) 메모리의 주소 공간은 다음의 그림과 같은 형태임아래 예시에서..
[운영체제] 메모리 계층 구조 ( Memory Hierarchy)를 알아보자 Memory Hierarchy(메모리 계층 구조)란 메모리 계층 구조는 메모리 관련 3가지 주요 특성인 용량,접근 속도, 비용간의 절충 관계를 파악해 필요에 따라 여러가지 종류로나타낸 구조CPU에 가까운 순서대로 레지스터, 캐시 , 메모리(RAM) 그리고 하드디스크(저장장치)가 있음CPU에 가까울수록 빠르지만 용량이 작고, CPU에 멀수록 느리고 용량이 큼  Register(레지스터)CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억 장치CPU 내부의 작은 메모리휘발성 + 속도가 가장 빠름 + 기억 용량이 가장 적음Cache(캐시)데이터를 미리 복사해 놓는 임시 저장소Caching(캐싱) : cache에 있는 메모리 영역으로 데이터를 가져오는 것휘발성 + 속도가 빠름 + 기억 용량이 적..
[운영체제] 동기, 비동기 그리고 Blocking과 Non-Blocking에 대해서 알아보자 Synchronous (동기) 란?Synchronous란 요청과 응답이 동시에 일어난다는 의미동시라는 의미는 실행됐을 때, 응답(값)이 반환되기 전까지 Blcoking되어 있다는 의미요청-응답 작업이 이루어지고 있으면 아무것도 못하면 대기해야 하므로, 비효율적임ASynchronous (동기) 란?ASynchronous란 요청과 응답이 동시에 일어나지 않을 것이라는 의미동시에 일어나지 않는다는 의미는 요청을 보내고 응답을 기다리지 않고, 다른 요청을 처리한다는 의미여러 개의 처리가 함께 실행되는 방식으로 동기 방식보다 효율적임동기와 비동기의 차이동기는 실행됐을 때, A작업의 값이 반환되기 전까지 다른 작업은 진행하지 못함 (Blocking 되어있음)비동기는 이벤트 큐나 백그라운드 스레드에게 작업을 위임하고..
[운영체제] 멀티 프로세스(Multi Process)와 멀티 스레드 (Multi Thread)를 알아보자 멀티 프로세스란?(Multi Process)멀티프로세스란 각각 독립된 메모리 공간을 가진 여러 프로세스가 동시에 실행되는 방식 (병렬처리)멀티 프로세스 장점각각의 독립된 메모리 구조를 사용하기 때문에 안정성이 높음하나의 프로세스에 문제가 발생하여도 다른 프로세스에 영향을 주지 않아, 작업 속도가 느려지는 손해는 생기지만 정지되거나 하는 등의 문제는 발생하지 않음즉, 멀티 프로세스는 각각의 프로세스가 독립적으로 실행되므로, 하나의 프로세스에 문제가 발생해도 다른 프로세스가 영향을 미치지 않음.멀티 프로세스 단점독립된 메모리 영역을 가지기 때문에 Context Switching이 자주 발생할수록 오베허드가 발생하여 성능 저하가 발생함.프로세스 간 통신 비용이 높고, 메모리 사용량이 많음멀티 스레드란?(Mul..
[운영체제] 프로세스에 대해서 알아보자(프로세스 상태변화,PCB,문맥교환) 프로세스(Process)란?프로세스란 운영체제로부터 자원을 할당받은 작업의 단위프로세스란 메모리에 올라와 있고 실행 중에 있는 프로그램하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가고 그때부터 프로세스라고 부름프로세스는 실행될 때, OS로부터 각각 독립된 메모리 영역(Code,Data,Heap,Stack)을 할당받음각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없음한 프로세스가 다른 프로세스에 접근하려면 프로세스 간 통신(IPC)를 사용해야됨 ex) 파이프,파일,소켓 등보통 하나의 프로세스가 생성되면 하나의 스레드가 함께 생성되는데 이를 메인 스레드라고 함프로세스의 상..
[운영체제] 프로세스 메모리 구조를 알아보자 프로그램이 실행되기 위해선 먼저 해당 프로그램이 메모리에 로드되어야 합니다. 오늘은 프로세스의 메모리 구조에 대해서 알아보겠습니다.프로세스 프로세스는 실행되고 있는 프로그램입니다. 프로그램을 실행하게 되면 운영체제(OS)는 메모리(RAM)에 공간을 할당해줍니다. 즉, 프로세스는 메모리 공간을 OS으로부터 할당 받습니다. 프로그램 : 저장 장치에 저장되어 있는 정적인 상태프로세스 : 실행을 위해 메모리에 올라온 동적인 상태  메모리 공간(RAM) - 코드(code), 데이터(Data) ,힙(Heap),스택(Stack)  메모리 공간 (RAM)은 코드(code), 데이터(Data) ,힙(Heap) 그리고 스택(Stack)  영역으로 나뉜다.Code 영역실행할 프로그램의 코드가 저장됨.작성한 소스코드가 저장되..