남이 읽는 CS/운영체제12 [운영체제 12편] 페이징 세그먼테이션 (불연속 할당 방식) 안녕하세요! 개발자 배씨입니다~ 저번시간에는 연속할당이라는 것에 배워봤어요 ㅎㅎ 이번 시간에는 연속할당에 반대되는 불연속할당에 대해서 배워 보려고합니다!! 들어가봅시다 불연속 할당의 대표적인 예로는 페이징과 세그먼테이션 기법이 있습니다. 근데 조금 복잡해서 이해하기 힘드니까 천천히 잘 따라오세요 ㅎㅎ 일단! 가상메모리라는 것을 알고 있어야합니다. 가상메모리??? 들어보긴 했는데.. 뭐지? 하셨나요?? 예를 들어, 만약 프로그램 크기가 12GB 인거에요~ 엄청 크죠?? 근데 여러분들이 지금 노트북에 8GB 램(메모리)을 사용하고 있다고 쳐요. 여기서 12GB 프로그램을 실행시키기 위해서는 메모리에다가 할당시켜야 하는데 8GB 램에서 12GB 프로그램을 못담잖아요? 용량이 너무 큰거죠! 그러면 어떻게 해야할.. 남이 읽는 CS/운영체제 2022. 5. 27. [운영체제 11편] 메모리 할당 (연속할당 방식) 안녕하세요! 오늘은 [운영체제 11편] 메모리 할당I (연속할당 방식)에 대해서 배워보려고 합니다 !! 저번주 포스팅에서 제가 내부 단편화와 외부 단편화에 대해서 언급했습니다 ㅎㅎ 이 주제의 포스팅을 읽다보면 내부/외부 단편화가 무엇인지 확실히 이해될 것이라고 생각합니다:) 들어갑시다!! 제가 물리적 메모리는 두개의 영역으로 나뉜다고 했었던 거 기억나시나요?? 물리적 메모리(램)은 운영체제 영역과 사용자 프로세스 영역으로 나뉘게 됩니다. [운영체제 6편] 에서 언급을 했었습니다. 기억 안나시는 분들은 아래 링크 참고하세요! [운영체제 6편] 유저모드 커널모드 저번 시간에 "데드락"에 대해서 배워봤었죠?? 그리고 "IPC"에 대한 존재가 있다고 했지만 그전에 배워야할 것들이 있다고 했어요~ 흐름에 따라 포.. 남이 읽는 CS/운영체제 2022. 5. 11. [운영체제 10편] 메모리 접근 벌써 운영체제 10편을 할 차례가 되었네요~ 아직 갈 길은 멀지만 그래도 포스팅 하나를 완료하고 나면 나름 뿌듯하답니다~ 저번주에 정말 복잡한 스케줄러에 대해서 학습을 하셨으니 오늘은 조금 가볍고 직관적인 내용에 대해서 포스팅 할 예정입니다. 10편 기념으로 복잡한 주제는 잠깐 미룰게요. 사실 흐름 상 어쩔 수 없이 이 주제를 가지고 해야한답니다 :) 오늘은 메모리 관리에 대해서 알아볼려고 해요~ 메모리의 동의어는 많아요. 램, 메인 메모리, 주기억장치 뭐 이렇게 부르잖아요~ 근데 보통 메모리라고만 부릅니다! 암튼! 프로그램을 실행하면 해당 프로세스 데이터들이 어떻게 메모리 공간에 할당되는지에 대해서 학습을 하는 것이 오늘의 목표입니다! 만약 여러 프로세스들이 메모리에 상주할 때 CPU가 수행하고 있는 .. 남이 읽는 CS/운영체제 2022. 5. 8. [운영체제 9편] 스케줄링 종류 안녕하세요! 개발자 배씨입니다:) 자 오늘은 드디어 ~~~~ 스케줄링에 대해서 알아보려고 해요 내용이 많으니까 천천히 잘 따라오셨으면 해요. 저도 쉽게 설명하기 위해 노력할테니까!! 크흠. 제 목표는 "글을 읽는 모두를 이해 시키는 것" 입니다 ㅎㅎ 가봅시다 !! 지금까지 Context Switching(문맥교환) 이라는 말을 많이 썼어요. CPU가 어떠한 프로세스의 명령어를 수행중이다가 타이머 인터럽트에 의해서 다른 프로세스로 교체를 하잖아요? 이때 수행중이던 프로세스의 정보를 PCB에 담고 다른 프로세스의 PCB 정보를 꺼집어내서 그 프로세스를 수행시킨다고 "한 100번 정도 말씀 드렸어요" 그렇다면 이 문맥교환을 할 때 어떤 프로세스를 선택해서 교체작업이 시작될까요?? 이것이 스케줄링 입니다~ CP.. 남이 읽는 CS/운영체제 2022. 4. 13. [운영체제 8편] IPC란 무엇인가 안녕하세요! 개발자 배씨입니다~~ :) 저번 시간에는 인터럽트에 대해서 알아보았어요!! 오늘은 예전부터 언급했던 IPC 가 무엇인지 이제 배워볼게요 ㅎㅎ 지금껏 제가 설명드렸던 프로세스는 각자 독립적인 주소 공간을 가지고 수행되기 때문에 다른 프로세스와 정보를 주고 받을 수 있는 방법이 없다고 생각 하셨을거에요~ 멀티 스레드 환경에서는 서로 공유하는 공간이 있기 때문에 데이터를 주고 받을 수 있겠지만 프로세스는 독립된 구조인데 어떻게 자원을 공유할 수 있을까요? 그래서 똑똑한 조상이 운영체제가 프로세스 간의 협력 메커니즘을 제공해서 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있게 해줬답니다. 즉, 하나의 컴퓨터 안에서 실행 중인 서로 다른 프로세스 간에 발생하는 통신! IPC(Inter-P.. 남이 읽는 CS/운영체제 2022. 4. 13. [운영체제 7편] 인터럽트가 무엇인가 안녕하세요~ 개발자 배씨입니다 :) ㅎㅎ 자! 오늘은 인터럽트가 무엇인지에 대해서 알아볼려고 해요~ 해당 주제를 어떻게 정리해야할 지 정말 까다로워서 며칠을 고민하고 수정했답니다. 또한, 이 주제에서는 조~~~~금 용어가 많이 나오니까 목도 푸시고~ 기지개도 한번 쫘악 피시고 정신 가다듬고 천천히 따라오세요! 들어갈게요~ 인터럽트가 무엇일까요??? 입터럽트는 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 일시 중단하고, 발생된 상황을 우선 처리한 후 실행중이던 작업으로 복귀하여 계속 처리하는 것을 말해요! 말이 좀 길죠? ㅎㅎ 이해가 잘 되진 않을겁니다. 다만, CPU가 어떠한 프로세스를 수행중이다가 갑자기 인터럽트라는 신호가 발생되면 하던일을 중단하고 다른 무언가를 처.. 남이 읽는 CS/운영체제 2022. 4. 4. [운영체제 6편] 유저모드 커널모드 저번 시간에 "데드락"에 대해서 배워봤었죠?? 그리고 "IPC"에 대한 존재가 있다고 했지만 그전에 배워야할 것들이 있다고 했어요~ 흐름에 따라 포스팅을 하는 것이 자연스럽고 깔끔하다고 느끼지만, 글을 쓰다가 아직 포스팅하지 않은 내용의 용어를 써야할 때는 조금 막막하더라구요. 그래서 고민하다가 데드락이 끝난 직후 바로 정리를 하는게 나을거 같더라구요~ 그래서 저번시간에 언급했던 IPC를 배우기전에 한번 거쳐서 가야할 부분이 있습니다. 유저모드와 커널모드 ,시스템 콜, 인터럽트 정도? 알고 가시는게 흐름 상 좋을거 같다는 생각입니다! 자 그렇다면 오늘은 무엇을 배울거냐???! "유저모드" 그리고 "커널모드"에 대해서 배워볼려고 합니다. 그게 뭐야..? 하실수 있을거에요 ㅎㅎ 저도 그랬거든요. 일단 한줄~.. 남이 읽는 CS/운영체제 2022. 4. 3. [운영체제 5편] 데드락이 무엇인가 안녕하세요~ 개발자 배씨입니다!! 저번 시간에 뮤텍스와 세마포어에 대해서 알아보았어요 이번 시간에는 "Deadlock(교착상태)"에 대해서 알아보려고 해요. 교착상태 그게 뭐지..? 생각하실 수 있어요. 저번시간에 예를 들었었죠?? 화가 "배씨" 와 화가 "이씨"가 있어요. 그리고 "배씨"와 "이씨"는 그림을 그릴려고 작업실(임계구역)에 들어가서 물감(공유자원), 붓(공유자원)을 각각 하나씩 집었어요. "배씨"는 물감을 들었고 "이씨"는 붓을 들고 서로 필요한 도구를 기다리고 있는거에요. "배씨"는 붓이 필요하니까 붓을 기다리고 있고, "이씨"는 물감이 필요하니까 물감을 기다리고 있는거죠. 즉, "둘 이상의 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다.. 남이 읽는 CS/운영체제 2022. 3. 22. [운영체제 4편] 세마포어가 무엇인가 안녕하세요! 개발자 배씨입니다!! 저번 시간에 뮤텍스에 대한 포스팅이 길어지면서 분위기 전환 겸 새 게시글로 이어서 작성해요! 이번에는 "세마포어"에 대해서 알아보려고해요! 핵심만 먼저 말하자면 공유자원이 하나 이상일 때 처리하는 동기화 방법입니다. "카운팅 세마포어"라고도 불립니다. 예를 한번 들어볼게요! 뮤텍스의 예와 조금 다르게 식당에 화장실이 3개가 존재하고 식당 카운터에 화장실 열쇠가 3개 걸려있다고 생각해보세요! 만약, 화장실 3개가 모두 비어있다면 카운터에는 3개의 열쇠가 있을거에요. 이후, 한명의 사람이 열쇠를 하나 들고 화장실에 들어가게 되면 카운터에는 열쇠 2개가 남았을거에요 이후, 한명의 사람이 열쇠를 하나 들고 화장실에 들어가게 되면 카운터에는 열쇠 1개가 남았을거에요 이후, 한명의.. 남이 읽는 CS/운영체제 2022. 3. 15. [운영체제 3편] 뮤텍스가 무엇인가 지난 시간에 스레드에 대해서 알아봤었죠?! 그리고 멀티 스레드 환경에서는 서로 공유하는 영역이 있기 때문에 같은 데이터에 접근하는 경우 문제가 발생할 수 있다고 설명드렸어요~ 그래서 제가 "동기화 작업"이 필요하다고 했었죠?? 자! 그럼 동기화가 뭔데?! 한번 들어가봅시다 :) 저번 시간에 예시를 들면서 설명 잠깐 했어요 스레드 "배씨"가 공유자원인 도화지에 사자의 얼굴을 그리다가 다른 스레드 "이씨"가 들어와서 호랑이로 바꿨잖아요?? 그렇게 된다면 스레드 "배씨" 가 계획했던 목표가 바뀌면서 나아갈 수 없는 상황이 되겠죠. 이처럼 프로세스/스레드는 같은 데이터에 접근해야하는 경우가 있어요! 이때 일정한 규칙없이 데이터 수정을 허용하게 된다면 데이터의 신뢰성이 사라지겠죠?? 그렇기때문에 데이터의 일관성을.. 남이 읽는 CS/운영체제 2022. 3. 8. 이전 1 2 다음 반응형