본문 바로가기

프로그래밍/운영체제

(5)
[운영체제] External Fragmentation (외부 단편화) 이번에는 저번에 마지막으로 배웠던 mapping 에 관한 문제를 먼저 얘기해보자. 논리적주소를 설명하면서 mapping의 개념을 배웠다. 이를 '할당'한다는 개념이라 설명하였다. 여기서 연속 할당이란 논리적 주소에 동일한 base register를 더해주는 것이다. 우리는 연속 할당의 문제점에 대해 얘기를 할 것이다. 외부 단편화 (External Fragmentation) 일단 두가지 용어를 알아야 한다. Partition Hole 아래의 예시를 통해 개념을 알아보자 운영체제는 Hole 을 제외한 파티션의 개수만큼 동시 실행이 가능하다. 만약 새로운 프로그램을 실행하려 하는데, 요구하는 프로세스의 용량이 Hole의 크기보다 크면 메모리에 올라갈 수 없어 실행되지 못한다. F는 실행 가능할까?? 불가능하..
[운영체제] 주소공간( Address Space, Memory Management ) 우리는 한정된 메모리 공간을 효율적으로 관리할 수 있어야 한다. (메모리 단가가 있다보니...) 어떻게 효율적으로 관리할 수 있을지 알아보고 고민해보자! 주소 공간 (Address Space) CPU는 주소값을 통해 메모리에 접근한다. 많이 들었던 주소값이 이에 해당하고 메모리의 단위는 바이트(byte)이다. 그래서 주소 한 칸은 1 byte의 데이터를 저장할 수 있다. Physical Address(PA) 메모리를 큰 저장장치라고 생각하자. 단순히 큰 배열일 뿐이다. 배열이기 때문에 인덱스값을 가지는데, 이 값을 물리적 주소라고 한다. 논리적 주소도 마저 알아보고 간단한 예시를 통해 개념을 구체화 시켜보자. Logical Address(LA) 논리적 주소는 쉽게 말해 CPU 입장에서의 메모리 주소, 프..
[운영체제] Dead lock https://steady-coding.tistory.com/520 [운영체제] Deadlock cs-study에서 스터디를 진행하고 있습니다. Deadlock이란? 프로세스가 자원을 얻지 못해서 다음 처리를 하지 못하는 상태를 뜻하며, 교착 상태라고 부른다. 두 개 이상의 작업이 서로 작업이 끝나기 steady-coding.tistory.com Deadlock 이란? 이는 동기화 문제에서 이어진다. 교착상태라고도 하며, 프로세스가 자원을 얻지 못해서 다음 처리를 하지 못하는 상태를 말한다. 교착상태라고 하며, 두 개 이상의 작업이 서로 작업이 끝나기만을 기다리기 때문에 결과적으로 아무것도 완료되지 못한다. deadlock 발생 조건 4가지가 존재한다. 4가지 모두 만족해야 교착상태가 발생한다. 상호 배..
운영체제 (2) - 시스템은 어떻게 보호 되는가? (system call) 시스템은 사용자 응용 프로그램이 시스템에 해를 끼치는지 어떻게 알아낼 수 있을까? 내용을 시작하기에 앞서 이 글은 시스템 호출(system call)에 대한 내용을 메인으로 다룰것이다. 내가 시스템콜에 대해 가장 간단히 방법은 다음과 같다. 만약 당신이 간단한 프로그램을 실행할 때 하나의 프로그램 실행에도 많은 내부과정이 필요하다. 하나의 상황을 예시로 들어보자. 당신은 파일의 내용을 복사하는 프로그램을 작성하기를 희망한다. 이 때 필요한 것은 첫번째로 읽는 입력파일 이름, 출력파일 이름. 이를 위해 프로그램은 사용자에게 두 파일의 이름을 요청할 것이다. 이 때 시스템콜이 필요한데, 프롬프트 메시지를 화면에 표시하기 위해 시스템콜이 필요하고 두 파일의 이름에 해당하는 문자열을 키보드로부터 읽기 위해 두번..
운영체제(1) - 시스템은 어떻게 작동하는가(Multicore system, Interrupt) 운영체제 왜 공부하지? 운영체제란 무엇인가? 우리는 우리의 문제를 더욱 쉽게 해결하기 위해 프로그램을 사용한다. 이러한 목적을 위해 하드웨어가 제작되고, 하드웨어만으로는 사용이 어렵기 때문에 응용 프로그램이 개발되었다. 여기에 자원을 제어하고 할당하는 기능을 하나의 소프트웨어로 통합한 것이 운영체제 (operating system) 이다. 라고 정의되어 있지만 우리가 평소에 이미지하고 있는 것과 크게 다르지 않을 것이다. 운영체제를 더욱 일반적으로 정의하자면 컴퓨터에서 항상 실행되는 하나의 프로그램으로 일반적으로 커널(kernel) 이라 불린다. 운영체제를 깊게 알아보기 전에 컴퓨터 시스템 구조에 대해 한번 짚고 가보자. 우리는 크게 입출력 구조, CPU, memory 로 나눌수 있다. Memory 를 ..