본문 바로가기

전체 글135

저장장치 관리 (2) 이번 단원에서는 여러개의 하드디스크를 하나로 사용하는 RAID 기법에 대해 배웠다. 이 전 글에서 여러 하드디스크를 하나의 파티션으로 모아논 것을 마운트라고 소개했었는데 RAID는 여러개의 하드디스크에 데이터를 각각 저장하여 데이터 복원, 혹은 속도 향상등의 작업을 하기 위해 사용한다. 또한 하드디스크가 데이터를 불러오는 과정중에 '탐색시간'은 헤드가 직접 움직여야 하기 때문에 가장 많은 시간이 소요된다. 그 탐색시간을 최대한으로 줄이기 위해 여러 기법을 사용하는데 그 기법에 대해 소개하겠다. 3. 디스크 스케줄링 1. FCFS 디스크 스케줄링 : 가장 단순한 스케줄링. FIFO 와 같이 가장 먼저 들어온 트랙 순서대로 서비스한다. 가장 단순한 대신 가장 효율이 낮은 기법이기도 하다. 2. SSTF 디스.. 2022. 4. 10.
저장장치 관리 (1) 그동안 저장장치라 하면 HDD나 SSD와 같이 대중적인 것들의 이름정도만 알고 어떻게 작동하는지 자세한 내용에 대해선 잘 몰랐었다. 하지만 이러한 것들이 되게 내 주위에 익숙하게 있었다. 예를 들자면 CD플레이어와 HDD가 비슷한 원리로 작동된다는 것이다. 조각모음과 포멧팅과 같은 익숙한 이름도 많이 보였고 나도 모르는 사이에 컴퓨터를 다루며 저장장치에 대해 배웠던 것 일지도 모르겠다. 1. 입출력 시스템 1-1 입출력장치와 채널 컴퓨터의 각 장치는 메인보드의 버스로 연결된다. 주변장치는 데이터의 전송 속도에 따라 저속 주변장치, 고속 주변장치로 나뉠 수 있다. 저속 주변장치와 고속 주변장치의 데이터 전송 속도의 차이 때문에 버스에 병목현상이 발생한다. 따라서 여러 채널을 사용해 버스의 수를 늘린다. 하.. 2022. 4. 4.
가상 메모리 관리 (2) 오랜만에 블로그를 업로드하는것 같다. 그동안 학교 과제를 하느라 파이썬을 공부했었는데 파이썬도 이제 블로그에 올릴 생각이다. 이번 단원에서는 프로세스에 프레임을 어떤 기준으로 할당하는지에 대해 배웠다. 가장 이상적인 방법은 해당 프로세스가 필요한 만큼 유동적으로 할당하는 방법이 좋은데 이것은 현실적으로 불가능 하므로 현실적으로 가능한 여러 방법을 다룬다. 3. 스레싱과 프레임 할당 3-1 스레싱 1. 스레싱의 개념 : 물리메모리의 크기가 작아 CPU가 프로그램을 실행하는 것 보다 메모리 관리에 더 시간을 써서 프로그램이 멈춘 것 같은 상태 2. 물리메모리의 크기와 스레싱 : 스레싱이 일어나는 가장 근본적인 이유는 메모리에 올라와 있는 프로세스의 크기보다 메모리의 크기가 작아 CPU가 일을 하지 못하는 것.. 2022. 4. 3.
가상 메모리 관리 (1) 이번 단원은 '메모리가 꽉 차있을 때 프로그램을 올려야 할 때에 어떤 페이지를 스왑영역으로 옮겨야 할까' 에 대한 여러 알고리즘을 배웠다. 처음에는 '어떠한 조건이 있으면 조건을 만족하기 어려운 페이지가 아사현상에 빠지지않을까?' 하고 생각했었는데 다시 생각해보니 서로 완전히 다른 영역이였다. 그리고 LRU 페이지 교체 알고리즘과 2차 기회 페이지 교체 알고리즘이 되게 유사하다고 생각이 든다. 둘 다 시간의 흐름을 기반으로 하고 있지만 다시 사용한 페이지라면 시간의 흐름을 초기화 한다는 성질 때문인데 이건 다시 공부하며 확실히 알고 넘어가야겠다. 마지막으로 페이지 교체 알고리즘과 캐시메모리가 사용하는 알고리즘이 같지않을까 하는 궁금증도 생겼다. 사용자가 쓰지 않을것 같은 데이터와 사용할것 같은 데이터를 .. 2022. 3. 23.
가상 메모리의 기초(2) 이번단원을 공부하며 다른 단원보다 더 많은 궁금증이 생겼다. 처음보다 난이도가 많이 올라간 이유도 있겠지만 내가 조금씩 이런저런 생각을 하며 공부를 하는 것 같아 뿌듯하다. 하나의 예시로 세그멘테이션기법이 페이징 기법보다 테이블이 작다고 한다. 처음에는 같은 크기의 프로세스인데 어떻게 테이블의 크기가 차이가 날까 생각을 해봤는데 페이징기법에서는 나뉜 공간중 사용하는 공간 모두에 테이블이 필요하지만 세그멘테이션기법은 프로세스 하나에 하나의 테이블만 존재하기 때문인것 같다. 3. 세그멘테이션 기법 3-1 세그멘테이션 기법의 구현 세그멘테이션 테이블 : 세그멘테이션 기법에서의 매핑 테이블 구조 : 프로세스의 크기 (limit)와 주소 (address)로 이루어짐 → 페이징 기법과 다르게 프로세스의 크기가 서로.. 2022. 3. 21.
가상 메모리의 기초 (1) 가상 메모리의 핵심은 '메모리에 하나의 프로세스가 다 올라오지 않아도 실행할 수 있다' 는 것이다. 먼저 프로그램은 HDD와 같은 저장장치에 저장되어 실행하기 위해 RAM과 같은 메모리에 올라온다. 이것이 프로세스를 실행하기 위한 방법인데 RAM의 크기가 프로세스의 크기보다 작다면 실행할 수 없을까? 그러면 우리는 RAM의 용량에따라 실행할 수 있는 파일이 한정될까? 답은 아니다. 이러한 문제를 해결하기 위한 개념이 바로 가상메모리이다. 가상메모리는 프로그램이 저장되어있는 HDD에서 RAM으로 프로세스의 일부분만 가져온다. RAM은 이전에 배웠던 메모리 오버레이를 이용하여 일부분의 프로세스만 가지고 프로세스를 실행할 수 있다. 이렇게 일부를 하드디스크에 남기고 필요한 부분만 사용한다면 여러개의 프로세스를.. 2022. 3. 17.
메모리 관리 (2) 전 단원에서는 메모리의 기초적인 개념,용어를 배웠다면 이번 단원에는 '메모리를 어떻게 하면 효율적으로 관리 할 수 있을까'에 대해 다룬다. 이건 우리의 일상생활에서도 흔히 마주칠 수 있는 문제인데 식당에 갔을 때 손님의 수에 맞게 테이블을 제공하는 식당이 있을 수 있고, 4명이 앉을 수 있는 테이블로만 구성하는 방법도 있을 것이다. 이러한 방법은 여러 장단점이 있는데 이번 내용에서 소개하겠다. 4. 다중 프로그래밍 환경에서의 메모리 할당 4-1 메모리 분할 방식 가변 분할 방식 : 프로세스의 크기에 따라 메모리를 나누는 방식. 한 프로세스가 연속적인 메모리에 배치되기 때문에 연속 메모리 할당이라고도 한다. 장점 : 프로세스 측면에서 봤을 때 매우 편리함 단점 : 관리가 불편함/ 프로세스가 작업을 마친 후.. 2022. 3. 11.
메모리 관리 (1) 전에 친구와 컴파일러와 인터프리터의 차이에 대해 이야기 했었던 적이 있다. 그 때에는 정말 공부를 시작한지 얼마 안됬었고 인터프리터가 무엇인지도 몰라 친구가 알려주는 얘기만 들었던 것 같다. 그런데 이번에 다시한번 컴파일러와 인터프리터의 관한 이야기가 나왔고 이번에는 그 두가지의 장단점/ 왜 둘을 분류해서 사용할까와 같은 여러 의문점을 가질 수 있었다. 먼저 내가 생각했던 첫번째 의문점은 인터프리터에는 링커가 들어가지 않는다는 것 이다. 링커는 자주 사용하는 함수를 라이브러리에 보관하여 헤더에만 지정하면 쉽게 쓸 수 있는데 왜 인터프리터에서는 쓰지 않을까라는 생각을 했었는데 다시 생각해보니 인터프리터는 한줄한줄 바로 실행되는데 헤더에 지정을 한다는 것 자체가 잘못된 생각이였다는 것을 알 수 있었다. 또한.. 2022. 3. 10.
교착 상태 교착상태는 일괄 처리 시스템이 아닌 이상 어쩔 수 없이 발생하는 문제이다. CPU가 여러가지 프로세스에 시간을 할당하면서 생기는 문제인데 모든 해결법에 문제점이 하나씩 있다. 내 개인적인 생각이지만 완벽히 교착 상태를 해결할 때 쯤이면 시분할 시스템이 사라지지 않을까? 교착상태의 정의 define : 2개 이상의 프로세스가 서로 다른 프로세스의 작업이 끝나기만을 기다리며 기다리는 상황 교착상태의 발생 1. 시스템자원 2. 공유변수 3. 응용 프로그램 자원 할당 그래프 프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 그래프로 표현 원 : 프로세스 사각형 : 자원 다중자원 : 하나의 자원이 2개 이상의 프로세스를 수용할 수 있음 식사하는 철학자 문제 식사하는 철학자 문제는 교착상태의 대표적.. 2022. 3. 8.