본문 바로가기

재휘의 개발일기135

메모리 관리 (2) 전 단원에서는 메모리의 기초적인 개념,용어를 배웠다면 이번 단원에는 '메모리를 어떻게 하면 효율적으로 관리 할 수 있을까'에 대해 다룬다. 이건 우리의 일상생활에서도 흔히 마주칠 수 있는 문제인데 식당에 갔을 때 손님의 수에 맞게 테이블을 제공하는 식당이 있을 수 있고, 4명이 앉을 수 있는 테이블로만 구성하는 방법도 있을 것이다. 이러한 방법은 여러 장단점이 있는데 이번 내용에서 소개하겠다. 4. 다중 프로그래밍 환경에서의 메모리 할당 4-1 메모리 분할 방식 가변 분할 방식 : 프로세스의 크기에 따라 메모리를 나누는 방식. 한 프로세스가 연속적인 메모리에 배치되기 때문에 연속 메모리 할당이라고도 한다. 장점 : 프로세스 측면에서 봤을 때 매우 편리함 단점 : 관리가 불편함/ 프로세스가 작업을 마친 후.. 2022. 3. 11.
메모리 관리 (1) 전에 친구와 컴파일러와 인터프리터의 차이에 대해 이야기 했었던 적이 있다. 그 때에는 정말 공부를 시작한지 얼마 안됬었고 인터프리터가 무엇인지도 몰라 친구가 알려주는 얘기만 들었던 것 같다. 그런데 이번에 다시한번 컴파일러와 인터프리터의 관한 이야기가 나왔고 이번에는 그 두가지의 장단점/ 왜 둘을 분류해서 사용할까와 같은 여러 의문점을 가질 수 있었다. 먼저 내가 생각했던 첫번째 의문점은 인터프리터에는 링커가 들어가지 않는다는 것 이다. 링커는 자주 사용하는 함수를 라이브러리에 보관하여 헤더에만 지정하면 쉽게 쓸 수 있는데 왜 인터프리터에서는 쓰지 않을까라는 생각을 했었는데 다시 생각해보니 인터프리터는 한줄한줄 바로 실행되는데 헤더에 지정을 한다는 것 자체가 잘못된 생각이였다는 것을 알 수 있었다. 또한.. 2022. 3. 10.
교착 상태 교착상태는 일괄 처리 시스템이 아닌 이상 어쩔 수 없이 발생하는 문제이다. CPU가 여러가지 프로세스에 시간을 할당하면서 생기는 문제인데 모든 해결법에 문제점이 하나씩 있다. 내 개인적인 생각이지만 완벽히 교착 상태를 해결할 때 쯤이면 시분할 시스템이 사라지지 않을까? 교착상태의 정의 define : 2개 이상의 프로세스가 서로 다른 프로세스의 작업이 끝나기만을 기다리며 기다리는 상황 교착상태의 발생 1. 시스템자원 2. 공유변수 3. 응용 프로그램 자원 할당 그래프 프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 그래프로 표현 원 : 프로세스 사각형 : 자원 다중자원 : 하나의 자원이 2개 이상의 프로세스를 수용할 수 있음 식사하는 철학자 문제 식사하는 철학자 문제는 교착상태의 대표적.. 2022. 3. 8.
프로세스 동기화 (2) 이번 단원은 코드가 많이나와 이해하는데 시간이 많이 필요했다. 이해를 하고 나니 매우 쉬운 내용이였고 다른 임계구역을 보호할 수 있는 방법을 여러가지 생각해봤지만 내가 생각했던 것들은 모두 여러가지 상황들로 인해 문제점이 많았다. 먼저 첫번째로 다루는 코드에 잠금확인을 2번 하는 것이다. P1 1. while(lock2==true); // lock2가 true이면(P2이 임계구역을 사용중이면) 무한 대기 3. lock1==true; // lock1을 true(잠금)로 설정 5. while(lock2==true); // 이중확인 > 무한잠금 //임계구역 lock1=false; lock1을 false(잠금해제)로 설정 P2 2. while(lock1==true); // lock1가 true이면(P1이 임계구.. 2022. 3. 6.
프로세스 동기화 (1) 최근 개강전 컴활 자격증을 따느라 블로그에 소홀했었던것 같다. 짧은 기간동안 되게 열심히 자격증 공부를 했음에도 불구하고 좋은 결과가 나와 뿌듯했다. 컴활 자격증에 대한 이야기는 자격증 카테고리에서 다루도록 하고 이번에 공부한 내용은 '프로세스의 통신'이다. 내가 1학년일때 아무 프로그램이나 만들어 오라는 과제를 받았었다. 한참 갈피를 못 찾고 고민하던 중 개발자 친구가 서버를 만든 후 '소켓'을 이용하여 클라이언트 PC와 통신을 할 수 있는 프로그램은 만들어 준 적이 있었다. 당시에는 정말 어려운 기술을 썼구나 라는 생각을 했었는데 지금 다시 보니 생각보다 쉽고 익숙한 내용이었다. OS를 끝내면 구글링을 통해 소켓에 대해 조금 더 알아보고 다시 그 프로그램을 만들 생각이다. 프로세스 간 통신 프로세스 .. 2022. 3. 3.
CPU 스케줄링 (2) 이번에 배운 내용은 'CPU의 사용시간'을 약수터의 물을 받는 시간이라고 생각하면 이해가 쉽다. 약수터에 여러 사람들이 모여있는데 그중에는 정수기에 넣을 물통을 들고 온 사람도 있을 것이고 물 한모금만 먹으러 온 사람도 있을 것이다. 정수기 통을 가져온 사람이 가장 빨리 와서 약수터에서 물을 받고 있으면 그 뒤로 도착한 많은 사람들은 그 사람이 끝나기만을 기다려야한다. 이렇게 빨리 온 순서대로 물을 받는 것을 FCFS 스케줄링 이라고 한다. 하지만 정수기 통을 가져온 사람 뒤에 물 한모금만 먹으러 온 사람이 있다고 생각해 보자. 정수기 통을 들고 온 사람이 물 한 모금만 먹으러 온 사람에게 순서를 양보해서 물을 먹고 자기는 나중에 받는 방법을 SJF 스케줄링이라고 한다. 이렇게 된다면 물이 많이 필요한 .. 2022. 2. 23.