본문 바로가기

반응형

별걸다하는 IT/운영체제 OS

반응형
(49)
[운영체제]교착상태 회피-은행원 알고리즘(Banker's Algorithm) 쉬운 예시, 안전상태, 불안전상태 [한 번에 끝내는 운영체제 목차!] Deadlock Avoidance 교착상태 회피 저번 시간에 교착상태 해결 방안 4종류를 알아봤어요 교착상태 예방, 교착상태 회피, 교착상태 탐지, 교착상태 복구! 이렇게 4가지 방안이 있었습니다. 기억나나요? 교착상태 회피는 데드락이 빠질 가능성이 있는지 없는지 운영체제가 검사하고 빠질 가능성이 없을 경우에만 자원을 할당함으로써 문제 발생을 피하는 방법입니다. 이번 포스팅에서는 교착상태 회피 대표 기법인 은행원 알고리즘에 대해서 자세히 포스팅해보도록 하겠습니다. 은행원 알고리즘 쉽게 이해하기! 은행원 알고리즘(Banker algorithm)은 다이직스트라 알고리즘을 개발한 Edsger Dijkstra가 개발한 알고리즘이예요 (다이직스트라 알고리즘은 네비게이션에서 쓰일..
[운영체제]세마포어(semaphore) 완전 쉬운 이해! wait(), signal(), 이진, 계수형 운영체제 완전 정복 목차~! semaphore의 유래~! 세마포어란? Semaphore는 깃발이라는 뜻입니다. 옛날에는 기찻길에서 깃발 표식으로 파란색이 걸려있으면 지나가도 되고 빨간색이 걸려있으면 섰다가 다른 기차가 지나가면 지나가게끔 하는 용도로 깃발을 사용했어요 이 깃발을 semaphore라고 부릅니다. 즉 저 겹치는 기찻길 부분이 두 기차가 공유하는 critical section인거죠! 저 기찻길에서도 critical section을 지나가도 된다 안된다를 알려주는 단어로 쓰인거랍니다. lock의 경우는, 0 또는 1이였죠! 그런데 세마포어는 shared data의 개수를 의미합니다. 그래서 0 또는 1 또는 2 또는.. 등이 될 수 있어요. 이 그림에서는 공유자원이 한 개이므로 (저 겹쳐지는 기..
[운영체제]Dynamic Loading 동적적재 & Overlays 오버레이 (paging VMM과 차이점) 운영체제 마스터 목차 Dynamic Loading 동적 적재란? Dynamic loading 프로세스가 시작될 때 그 프로셋의 주소 공간 전체를 메모리에 올려놓는 것이 아니라 메모리를 좀 더 효율적으로 사용하기 위해 필요한 루틴이 호출될 때 해당 루틴을 메모리에 적재하는 방식을 말합니다. 먼저 Loading은 메모리로 데이터를 옮기는 것을 로딩이라고 해요. 프로그램을 실행시키면 .exe에 있는 파일이 메모리에 올라가야지 실행이 되잖아요. 그것을 로딩 즉 메모리에 적재한다고 합니다. 자 우리가 전 포스팅에서 매우 자주 봤던 Address map으로 살펴봅시다 Code segment와 data segment 얘네는 실행파일에 있다고 말했죠? Code segment와 data segment는 파일에 있는 것을..
[운영체제]Static Linking vs Dynamic Linking(shared Library) 정적링킹 vs 동적링킹 운영체제 목차 Dynamic Linking을 이해하려면 Linking에 대해 이해를 하고 있어야하기 때문에 저번시간에 링킹에 대해서 포스팅을 했어요 링킹과정에서 오브젝트 파일을 라이브러리와 같이 Linking을 하는데 그 Linking을 하는 방법에 크게 두 가지가 있어요 딱 감이오죠 ? Dynamic Linking과 Static Linking! Static Linking이란? 일단 Static Linking이 이해하기 쉬운데 실행파일 만들 때 라이브러리를 같이 포함시켜서 .exe파일을 만드는 것을 Static Linking 즉 정적링킹이라고 합니다. 예를 들어 출력할 때 cout이라는 클래스 라이브러리를 사용하잖아요 그 cout이라는 클래스 라이브러리를 실행하는 코드가 있겠죠. hello.exe에다가 ..
[운영체제 Atomic방법]test_and_set, Compare_and_Swap, Bounded-waiting 운영체제 목차 자ㅏ아ㅏ아 운영체제의 lock문제를 해결하기 위한 방법으로 3가지가 있다고 저번에 설명을 했었어요 1. 소프트웨어적 방법 2. 더 이상 쪼개지지 않는 원자적 명령어로 구현하는 방법 (즉 하드웨어 명령어 이용하는 것) 3. 인터럽트 제어로 해결하는 방법 이렇게 세가지가 있던 거 기억나시나요? (lock문제에 대해서는 이 포스팅을) 그리고 이어서 전 포스팅에서는 1번 소프트웨어적의 대표적 방법 피터슨 알고리즘에 대해서 알아봤어요 하지만 요새 컴퓨터 구조에는 더 이상 이러한 1번 즉 소프트웨어적 방법을 쓰지는 않아요 주로 2,3번 방법을 이용해서 동기화 문제를 예방한답니다.ㅎㅎ 오늘은 2번에 관련된 대표적인 방법 test_and_set에 대해서 알아볼거예요. testAndSet이란? Lock과 ..
[OS]링킹(Linking)이란? 링커(Linker)란? 컴파일 과정,목적파일, 빌드과정 운영체제 목차 메모리 관리를 시작하기 앞서 메모리 관리와 관련된 몇 가지 단어들이 나오는데 이런 단어들을 이해를 못하고 있으면 안됩니다. Linking에 대해서는 프로그램 컴파일에 대해서 배웠으면 당연히 알고 있어야 해요!! Dynamic Linking 과 Static Linking 또한 알고 있어야합니다. 아시는 분들은 이번 포스팅은 그냥 가볍게 읽고 넘기면 되겠숩니다 모르는 분들이나 다시 상기시키기 위해서 가볍게 포스팅하고 넘어갈게요 이번 포스팅은 Linking에 대해서 (사실 운영체제 과목 내용은 아니지만 이해를 돕기 위해 진행하는 포스팅) 다음 포스팅은 Dynamic Linking과 Static Linking에 대해서 살펴볼게요 프로그램 빌드 과정- 컴파일 과정 링킹은 프로그램을 빌드 하는 과정에..
[운영체제OS]Memory Management 메모리 시스템(메모리 관리 목표) Operating System Chapter 8 Memory Management Strategies 메모리 관리 오늘은 본격적으로 메모리 관리 파트에 들어가기 전에, 하는 소개 및 잡담? 및 개요? 정도의 포스팅이예요. 우리 운영체제가 하는 게 컴퓨터 하드웨어 자원을 관리하는 건데 컴퓨터 하드웨어가 대표적으로 CPU, Memory, I/O가 있다고 했죠 그래서 OS가 하는 일이 CPU관리, 메모리관리, I/O관리예요. We showed how the CPU can be shared by a set of processes. As a result of CPU scheduling, we can improve both the utilization of the CPU and the speed of the comp..
[운영체제]임계영역 해결조건 & Peterson's solution(피터슨 알고리즘) [운영체제(OS) 목차 &책 추천] 쭉 이어서 동기화 내용 포스팅 하는 중입니다~~ 피터슨 알고리즘 또한 동기화문제에서 발생하는 상호배제를 위한 병렬 프로그래밍 알고리즘 중 하나입니다 지금은 사용되지 않는 소프트웨어적이면서도 고전적인 방법이지만 항상 운영체제의 흐름이 어떻게 변화되었고 역사를 아는 것은 매우 중요하니까요 ㅎㅎ 이러한 알고리즘의 배경을 알고싶다면 임계영역의 문제와 lock방법에 대해서.. Peterson's solution은 이름에서 알 수 있듯이 1981년에 수학자 개리 피터슨이라는 사람이 고안한 알고리즘이예요 처음에 피터슨이 이 알고리즘을 발표했을 때는 오직 두 개의 프로세스에 대해서만 적용이 가능했다고해요 하지만 지금은 일반화되어서 2개 이상의 프로세스들 사이에서도 이 방법이 통용된다..