본문 바로가기

컴퓨터공학/운영체제8

메모리 관리 전략(2) 목표1.세그멘테이션에 대해서 알아본다.2.페이징 기법에 대해서 알아본다.3.메모리 관리 전략에 대한 차이를 알아본다. 세그멘테이션 배경사용자가 인식하는 메모리의 모습과 실제 물리 메모리의 모양은 같지 않다. 물리적 특성을 고려하여 프로그래머가 메모리를 관리하는 방식은 효율적이진 않다. 그래서 프로그래머가 인지하는 메모리의 모습을 실제 물리 메모리의 모습으로 변환해주는 기법을 제공한다. 시스템은 메모리 관리하는데 있어서 더 많은 자유로운 선택을 할 수 있고, 프로그래머 또한 자연스러운 프로그래밍이 가능하다. 기본방법프로그래머는 메모리를 일부는 명령어를 저장하고, 나머지는 데이터를 저장하는 바이트의 배열로 생각하는가? 아니다. 프로그래머들은 가변적인 길이를 가진 세그먼트의 집합 그리고 세그먼트 사이에는 어떤.. 2018. 10. 28.
메모리 관리 전략(1) 목표1.메모리 관리 전략의 배경에 대해 알아본다.2.스와핑에 대해 이해한다.3.연속 메모리 할당 기법에 대해 이해한다.4.내부 단편화와 외부 단편화에 대해서 이해한다. 메모리 관리 전략그동안 CPU가 여러 프로세스에 의해 어떻게 공유되고 스케쥴링 알고리즘이 어떻게 동작하는지 살펴보았다. 그러나 성능을 향상시키기 위해서는 주 메모리에 여러개의 프로세스가 올라와 있어야 한다. 즉, 여러 프로세스들이 동시에 주 메모리를 공유해야 하는 상황이다. 메모리 관리 알고리즘은 단순 하드웨어 방식, 페이징, 세그먼트 등 다양하며 장, 단점이 있다. 메모리 관리 전략의 배경에 대해서는 여러가지가 있지만 논리 대 물리주소 공간은 짚고 넘어가자. 논리 대 물리주소 공간CPU가 생성하는 주소를 논리 주소, 메모리가 취급하는 주.. 2018. 10. 27.
프로세스 동기화(뮤텍스,세마포어,임계구역) 목표1.프로세스 동기화에 대해 간략히 이해한다.2.Critical Section(임계구역)을 이해한다. 2.세마포어에 대해서 이해한다.1.뮤텍스에 대해서 이해한다.3.뮤텍스와 세마포어의 차이에 대해 이해한다. 프로세스 동기화 프로세스는 서로 메세지를 보내고 프로세스 내부에서는 쓰레드끼리 자원을 공유하면서 '동기화'에 대한 문제가 항상 발생할 수 있다. 즉 공유된 자원에 여러 프로세스, 여러 쓰레드가 동시에 접근하면서 문제가 발생하게 된다. 유저 동기화 방법과 커널 동기화 방법이 있는데 유저 동기화는 Critical Section(임계영역) , 커널 동기화는 Mutex , Semaphore 가 있다. Critical Section(임계구역)OS에서 임계구역은 상당히 중요한 부분이다. 멀티 프로세스 환경에서.. 2018. 10. 26.
DeadLock(교착상태) 목표1.데드락의 개념에 대해서 이해한다.2.데드락의 발생 조건에 대해서 이해한다. 3.데드락을 예방할 수 있는 방법에 대해서 이해한다.4.데드락이 회피 할 수 있는 방법에 대해서 이해한다.5.데드락을 탐지 및 치료(?) 할 수 있는 방법에 대해서 이해한다. DeadLock(교착상태)데드락이란 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있는 상태이기 때문에 결과적으로 아무것도 완료되지 못하는 상태이다. 예를 들어 사다리가 있고 두 사람이 각각 위 아래쪽에 위치해있다고 가정해보자. 각자 반대방향으로 움직이려고 한다면, 두 사람은 서로 상대방이 사다리를 비켜줄 때 까지 하염없이 사다리에서 기다리는것 처럼 다중 프로그래밍에서 교착상태는 흔히 발생할 수 있으며 데드락에 대한 해결방법은 아직 없.. 2018. 10. 25.
CPU 스케쥴링 알고리즘 목표1.스케쥴링의 배경에 대해 이해한다.2.스케쥴링이 일어나는 시점에 대해 이해한다.3.스케쥴링 알고리즘의 평가기준에 대해서 이해한다.4.스케쥴링 알고리즘의 종류와 장,단점을 예시와 함께 이해한다. 스케쥴링이란?프로세스와 쓰레드 포스팅에서 배운거처럼, 한정된 자원으로 최대한 성능을 이끌어내기 위해서는 CPU를 적절하고 효율적으로 사용해야 한다. 따라서 OS는 실행 대기중인 프로세스들에게 자원 배정을 적절히 하여 시스템의 성능을 끌어올릴 수 있다.정책에 따라서 1.CPU이용률을 최대화,2.오버헤드를 최소화,3.모든 프로세스가 공평하게 분배하는 방식이 있다. 선점 스케쥴링(Preemptive Scheduling)OS가 나서서 CPU사용권을 '선점'하고, 특정 요건에 따라 각 프로세스의 요청이 있을 때 프로세.. 2018. 10. 24.
프로세스와 쓰레드의 차이점 목표1.프로세스와 쓰레드의 차이점에 대해 알아본다. 프로세스와 쓰레드의 차이점 위 메모리 구조는 프로세스와 쓰레드의 차이점을 보여준다. 1.프로세스는 새로 생성될 때 마다 새로운 PCB를 생성하여 자칫 overhead가 발생할 위험이 있지만, 쓰레드는 프로세스 내에서 생성되고, 편에서 살펴봤듯이 프로세스 자원을 공유하면서 통신도 가능하므로 경제적이다. 2.프로세스와 쓰레드의 차이점에 대한 질문은 결국 OS가 멀티 프로세스 방식과 멀티 쓰레드로 진행할 경우 자원할당을 어떻게 하고, 어떤 상황일 때 얼마나 더 효과적이겠는가에 대한 질문이기도 하다. 3.멀티 프로세스 방식에 비해 멀티 쓰레드 방식은 프로세스를 생성하여 자원을 할당하는 낭비를 줄일 수 있고, IPC같은 별도의 통신장치를 쓰지 않아도 되며, 스케.. 2018. 10. 24.
쓰레드 목표1.쓰레드에 대해서 이해한다.2.쓰레드의 이점과 단점에 대해서 알아본다.3.다중 쓰레드와 단일 쓰레드의 차이에 대해서 이해한다.4.쓰레드 용법에 대해서 알아본다.5.쓰레드의 상태변환에 대해서 파악한다. 쓰레드란프로세스가 실행중인 프로그램이라면, 쓰레드는 프로세스를 이루는 CPU의 작업 단위 중 하나이다.(경량화 프로세스라고도 한다.light Process)따라서 프로세스는 하나 이상의 쓰레드(작업 쓰레드)를 가지며, 쓰레드는 쓰레드ID(식별자), 프로그램 카운터, 레지스터 집합, 스택으로 구성된다. 쓰레드를 사용함으로써 얻는 이점1.사용자 응답성 증가:응용 프로그램의 일부 기능이 서버 통신이나 다소 긴 처리를 요구하더라도, 쓰레드로 구현함으로써 다른 기능들은 block되지 않고 계속 실행 가능하다.2.. 2018. 10. 24.
프로세스(Process) 목표 1.프로세스의 정의2.프로세스의 구성3.메모리 상의 프로세스의 형태4.프로세스 상태 변화5.리눅스에서 프로세스 생성과 종료6.프로세스 간 통신 프로세스란?프로그램의 실행 instace를 말한다.(비공식적으론 실행중인 프로그램이다) 프로그램은 보조기억장치나 메모리에서 실행을 기다리고 있는 데이터와 명령어 등의 모음이라면, 프로그램이 실행되면 비로소 프로세스가 되는 것이다. 프로세스는 그 자체로 다른 프로세스를 실행시킬 수 있는 좋은 도구이다. 대부분의 환경에서 자바 프로그램은 JVM에서 구동시킬 수 있는데, JVM 또한 자바 코드를 바이트 코드로 컴파일하는 기능을 수행하는 컴파일러이기 때문이다. 프로세스의 구성 프로세스는 운영체제에서 Process Controll Block(PCB)로 표현된다. 다음.. 2018. 10. 24.