본문 바로가기

CS

(51)
OS - 프로세스 관리와 CPU 스케줄링 Context switching (문맥 전환) CPU가 프로세스에서 작업을 하던 중 인터럽트가 발생하거나 OS의 스케줄대로 프로세스가 변경될 수 있다. 프로세스가 변경될 때 PCB에 있던 정보를 저장하고, 새로 작업해야할 프로세스의 정보는 불러와야한다. 스케줄러가 선택한 프로세스에 실질적으로 프로세서를 할당하는 역할을 한다. 이러한 작업을 해주는 것을 Dispathcher 라 하며 디스패쳐는 OS의 프로세스 관리 부서에 있다. 디스패쳐는 운영체제 모드를 커널에서 유저로 변경하는 역할까찌 수행한다. 그러나 디스패쳐는 Context switching overhead를 일으킨다. 그러므로 너무 많은 전환은 성능에 좋지 않다. 그래서 CPU 스케줄러가 중요하다. 컴퓨터 구조를 간략하게 그려보면 다음과 같다. 하..
OS - 프로세스 관리 프로그램과 프로세스 프로그램: 하드디스크에 설치된 정적인 개체 메인 메모리에 적재되어 메모리 구조를 이루고 카운터나 레지스터 처럼 자원을 사용하며 사용자가 사용하는 개체 프로세스 생명주기 New: 하드디스크에 있다가 인터럽트에 의해 메인 메모리에 적재된 상태를 말한다. Ready: 메모리에 적재된 후 변수 초기화 같은 초기화를 마치고 cpu가 할당되면 바로 실행될 수 있는 상태이다. Running: cpu를 할당받고 작동중인 상태이다. wait: 프로그램이 실행 중 인터럽트가 발생해 잠시 유저 모드에서 커널 모드로 변경되어 프로그램이 대기중인 상태를 말한다. Terminated: 프로그램 종료프로세스 생명주기는 위 처럼 5가지 상태를 지닌다. 위 처럼 실행,대기,초기화를 계속 반복하다가 결국 종료된다. ..
OS - 운영체제의 주요 서비스: 프로세스, 메모리, 파일관리 운영체제가 하는 일은 마치 나라의 정부가 하는 일과 비슷하다. 직접 건물을 짓거나 무언가 하지 않지만 허가를 내주고 정책을 결정하는 등 모든것의 관리를 한다. 운영체제 별로 차이는 있지만 보통은 네가지의 서비스를 제공한다. 부팅 서비스 - ROM을 통한 컴퓨터 부팅시 서비스 사용자 서비스 - 프로그래머가 프로그래밍 작업을 쉽게 수행할 수 있도록 함. 시스템 서비스 - 시스템의 효율적인 동작을 보장(보호가 포함됨) 시스템 호출 - 프로그램이 운영체제의 기능을 서비스 받을 수 있는 프로그램과 운영체제 간의 인터페이스를 제공 이 외에도 네트워크 기능, 보호기능 등 많은 일을 한다. 이 중에서도 System Call을 알아보자. System Call 애플리케이션이 OS의 서비스가 필요할 때 호출하는 것을 말한다..
OS - 듀얼모드와 하드웨어 보호 듀얼모드와 하드웨어 보호 듀얼 모드 OS는 유저모드와 커널모드(관리자 모드, 특권 모드)로 나뉜다. 유저가 만약 모든 권한을 가진다면 하드웨어에게 해를 끼칠 수 있는 상황이 존재할 수 있다. I/O를 침범할 수 있다. 어떠한 프로그램이 OS상태를 바꾸거나 강제로 디스크를 탐색할 수 있다. 즉 해킹이나 불법 프로그램에 의해 의도치 않은 상황이 발생할 수 있다. 이러한 상황을 방지 하기 위해 OS는 듀얼 모드를 지원한다. CPU 레지스터는 flag를 가지고 있다. 사진의 mode bit가 레지스터가 갖고 있는 그것이다. 여기엔 여러가지 비트가 있는데 그 중 하나이다. flag비트에 따라 유저 모드와 커널 모드가 바뀌게 된다. 이것은 하나의 인터럽트로 작용한다. 인터럽트에 의한 설명은 이전 포스팅에 자세히 다..
OS - 인터럽트(Interrupt)의 이해와 실행과정 인터럽트는 번역하면 가로채기이다. 운영체제에서 인터럽트는 진행하던 명령에서 급한 새로운 명령을 위해 가로챈다는 의미로 쓰인다. 현재 모든 OS가 인터럽트 기반을 채택하고 있다. 기본적인 컴퓨터는 위의 사진처럼 CPU, Memory, Hard Disk의 형태를 갖는다. 처음 컴퓨터를 부팅할 때 컴퓨터에는 어떤 일이 일어날까? 먼저 ROM에서 부팅 명령어가 실행된다. 부팅 명령어는 하드디스크에서 OS가 설치된 위치를 찾아 OS를 메모리에 적재시킨다. 이렇게 되면 OS는 화면에 아이콘을 보여주고 사용자 인터페이스를 제공한다. 💡 HDD보다 SSD가 부팅이 빠른 이유가 여기 있다. 디스크에서 프로그램 위치를 찾고 프로그램을 적재하는 속도가 SSD가 훨씬 빠르기 때문이다. 이후 컴퓨터는 특정한 명령을 기다리며 아..
이분 탐색의 이해 이분탐색은 간단하게 절반씩 줄여나가며 값을 찾는 방법이다. 논리는 중학생도 이해할 수 있는 간단한 로직이다. 그러나 문제를 풀다보면 lo < hi 인지 lo
객체지향 프로그래밍 - Singleton Pattern 개념/예제 싱글톤 패턴이란, 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다. 그리고 이 생성된 객체를 프로그램 어디서나 접근하여 사용할 수 있는 패턴이다. 여러개의 인스턴스를 생성하지 않고 위험한 전역변수를 사용하지 않고도 전역적인 접근이 가능한 객체를 생성할 수 있다. 싱글톤 패턴을 사용하는 이유 1. 자원의 낭비를 막는다. 2. 전역 변수의 오용을 막는다. 전역변수는 어디서든 접근할 수 있다. 3. 동기화 문제를 해결한다. 단점 1. 커플링이 높아져 객체지향을 해칠수있다. 2. 테스트하기 어렵다. 싱글톤 패턴의 3가지 스텝 1. 생성자를 private로 선언 2. 클래스 내부에서 유일한 인스턴스 생성 private static 3. 유일한 인스턴스에 접근할 수 있는 메서드 제공 그렇다면, 전역변수와 싱..
멀티코어 컴퓨팅 - Introduce Moore's Law : Doubling of the number of transistors on integrated circuits roughly every two years Clock Speed is not. Currently, CPU clock speed is not increasing rapidly becuase power comsumption and heat genaration is too high to be tolerated in high clock speed CMP : Chip MutiProcessor SMP : Symmetric MultiProcessor Amdahl's law : Potential program speedup is defined by the fraction of code ..