본문 바로가기

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

(47)
[운영체제]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 comput..
[운영체제]임계영역 해결조건 & Peterson's solution(피터슨 알고리즘) [운영체제(OS) 목차 &책 추천] 쭉 이어서 동기화 내용 포스팅 하는 중입니다~~ 피터슨 알고리즘 또한 동기화문제에서 발생하는 상호배제를 위한 병렬 프로그래밍 알고리즘 중 하나입니다 지금은 사용되지 않는 소프트웨어적이면서도 고전적인 방법이지만 항상 운영체제의 흐름이 어떻게 변화되었고 역사를 아는 것은 매우 중요하니까요 ㅎㅎ 이러한 알고리즘의 배경을 알고싶다면 임계영역의 문제와 lock방법에 대해서.. Peterson's solution은 이름에서 알 수 있듯이 1981년에 수학자 개리 피터슨이라는 사람이 고안한 알고리즘이예요 처음에 피터슨이 이 알고리즘을 발표했을 때는 오직 두 개의 프로세스에 대해서만 적용이 가능했다고해요 하지만 지금은 일반화되어서 2개 이상의 프로세스들 사이에서도 이 방법이 통용된다..
[운영체제]critical section(임계영역) & lock 락 & busy-waits [운영체제(OS) 목차 &책 추천] 저번시간에 동기화에 대해서 살펴봤고~ (이어서 진행하는 거라 이전 포스팅을 보고 오지 않으면 이해가 불가능합니다) 이번에는 동기화를 우리가 어떻게 풀어왔느냐~ 의 서두를 열 LOCK에 대해서 살펴볼게요 critical section 임계영역이란 용어 또한 전에 동기화 포스팅에서 배워서 다 알고 있는거예요! (헷갈리시는 분은 보고오기) 여기서 공유되는 자원, 즉 동시접근하려고 하는 그 포커싱된 자원!에서 문제가 발생하지 않게 독점을 보장해줘야 하는 영역을 임계영역이라고 해요. 이거 제어를 잘해야 동기화 문제가 안생기겠죠? 그래서 critical 중요한~ section 영역! 임계영역이라고 합니다. 저번 시간의 예시를 빌려오자면 남자친구와 여자친구 쪽에서 동시에 접근하려고..
[운영체제]동기화 Synchronization 문제, Race Condition 운영체제에서 Synchronization 동기화란? 동기화는 저번 포스트 IPC의 shared memory 얘기하면서 잠깐 언급했었는데 기억하시나요? 다시 한 번 정리하자면 두 개의 프로세스 A, B가 shared memory를 이용을 해가지고 데이터를 주고 받는데 A가 쓰면 B가 읽어가야 하는데 A가 여기다가 쓰고 난 뒤인지 쓰기 전인지 알 수 있는 방법이 없잖아요 그래서 A가 나 다 썼어! 라고 알려줘야 B가 shared memory에서 읽어간다고 했었죠! "즉 이와 같이 프로세스 또는 스레드들이 수행되는 시점을 조절하는 것을 Synchronization이라고 합니다." 좀 더 확실하고 상세한 이해를 위해 동기화 문제의 예시를 하나 들면서 설명해볼게요 자 남자친구하고 여자친구하고 은행의 계좌를 공유한..