진짜 개발자
본문 바로가기

CS(Computer Science)/운영체제 (총 8개)

운영체제 - 프로세스 동기화란? 프로세스 동기화 프로세스 동기화프로세스 동기화란하나의 자원을 한 순간에 하나의 프로세스만이 이용하도록 제어하는 것 스레드 동기화란하나의 코드블록 또는 메소드를 한순간에 하나의 스레드만이 이용하도록 보장하는 것 동기화가 없다면- 데이터 일관성이 깨짐 => 즉, 한 순간 하나의 데이터의 값이 여러개일 수도 있게 됨, 다시 말해 여러개의 스레드가 하나의 변수에 대한 값이 제각각일 수 있게 됨. 배경협력적 프로세스는 시스템 내에서 실행중인 다른 프로세스의 실행에 영향을 주거나 받는 프로세스 이다. 협력적 프로세스는 논리 주소 공간(코드, 또는 데이터)를 직접 공유 하거나 파일 또는 메시지에 의해서 공유가 이루어진다 전자의 방법을 통해 논리 주소 공간을 공유하는 것은 스레드(Thread)를 통해 달성할 수 있다...
프로세스간 통신(IPC) - 수정중 위 그림처럼 각각의 프로세스는 완전히 독립되어있다.장점 : 다른 프로세스에게 영향을 주지도 받지도 않는다단점 : 프로세스간 통신을위해 커널영역에서 IPC를 제공해야 한다 프로세스의 종류1. 독립 프로세스 - 다른 프로세스로부터 영향을 주지도 받지도 않는 프로세스 2. 협력 프로세스- 반대로 다른 프로세스로부터 영향을 주고 받는 프로세스 협력프로세스 이유1. 정보 공유2. 계산 가속화 등등 프로세스간 통신이란- 협력적 프로세스들이 서로 데이터와 정보를 교환할 수 있도록 하는 기법 단일 PC에서의 프로세스간 통신1. 공유메모리- 공유메모리 구축시에만 커널명령어를 사용- 공유메모리를 사용할 때에는 일반명령어로 사용가능- 일반적으로 운영체제는 한프로세스가 다른 프로세스의 메모리로 접근하는것을 금한다 공유메모리는..
스레드 개요 (참조 - http://www.jiniya.net/wp/archives/5856) 스레드 - CPU 이용의 기본단위 이다 - 같은 프로세스에 속한 다른 스레드들과 코드 , 데이터, 파일 등 운영체제의 자원을 공유한다. - 스레드ID, 프로그램 카운터(PC), 레지스터집합, 스택 으로 구성됨 배경 현대의 거의 모든 소프트웨어들은 다중 프로세스,스레드를 이용한다. 예를들어 서버에서는 실제 서비스는 자식 프로세스에게 맡기고 서버는 다음 요구를 받기위해 다시 대기를 할 수 있다 또한 웹서버에서는 여러 개의 클라이언트들이 동시에 접근할 수 있다. 이때 만약 웹서버가 단일 스레드 프로세스로 동작을 한다면 가장 마지막에 요청한 클라이언트는 자신이 서비스 받기 까지 엄청난 시간을 기다려야 할 것이다. 어떻게? 어차피 ..
프로세스 스케줄링 기존프로그래밍- CPU가 프로세스를 실행하다가 프로세스가 긴시간의 입출력을 요구하는 동안에는 CPU가 idle상태가 된다. 다중프로그래밍 - CPU의 이용률을 극대화 하기위해 항상 하나 이상의 프로세스를 실행하게 한다- 프로세스가 긴시간의 입출력을 요구하여 CPU가 놓여지면 다른 프로세스를 실행한다 이러한 패턴을 반복한다( 파일로부터 입출력을 해야하는 등의 물리적인 움직임이 필요하여 긴시간동안 CPU가 쉬는등의 경우) 시분할- 각각의 사용자들이 상호작용 할 수 있도록 CPU를 빈번하게 교체하여 할당하는 것 프로세스 스케줄링이란- 비다중프로그래밍 환경에서는 입출력과 같은 상황이 발생하게 되면 CPU는 긴 시간동안 유휴상태가 된다 반면에 다중프로그래밍 환경에서는 하나의 프로세스가 수행을 하다가 입출력을 해야..
프로세스 개요 프로세스는 실행중인 프로그램을 일컫는 말이다하드디스크에는 많은 프로그램들이 적재되어 있고 그 프로그램들이 메인메모리에 적재되기 위해서는 Job Scheduler의 할당을 기다려야하고 또 메인 메모리에는 많은 프로세스들이 적재되어 있고 그 프로세스들이 CPU 할당을 받기 위해 Cpu Scheduler의 할당을 기다려야한다 프로세스 - 하드디스크에 있는 프로그램이 메인 메모리에 적재된 것 - 실행중인 프로그램 - 프로그램카운터의 값 , 레지스터의 내용 , 스택 , 데이터섹션, 힙 을 포함한다 1. Job Scheduler ( Long Term Scheduler ) - 하드 디스크의 프로그램들이 메인 메모리에 할당 되기위해 Job Queue에서 대기중일 때그것을 관장하여 메인메모리에 프로그램들을 할당하는 것 ..
메모리관리(메모리 낭비 방지) *CPU는 프로그램이 동작할때에 필요한 데이터나 동작들을 메모리의 특정 주소로부터 가지고 와야하는데 이는 프로그램이 만들어질 때 코드화 되어있다.따라서 항상 같은 위치의 메모리 주소로 부터 데이터를 불러오게 된다.*하지만 메모리에 프로그램을 적재할 때에는 항상 같은 위치에 프로그램을 적재 할 수 없다 만약 정해진 위치에만 프로그램을 적재할 수 있다면 낭비되는 메모리가 많을 것이다. 때문에 운영체제는 프로그램을 적재할 때 빈공간을 찾아 적절히 적재하게 된다 이를 맞추어 조절하는 역할을 하는 것이 바로 MMU의 재배치 레지스터 이다. *적재 : 프로그램을 메인 메모리에 상주시키는 동작을 의미한다. *동적 적재 : 동적 적재는 프로그램 실행에 반드시 필요한 데이터/루틴 만 적재하는 것을 의미한다. 프로그램은 ..
멀티프로그래밍 , 멀티프로세싱 멀티 프로그래밍 - 멀티프로그래밍이란 과거 비싼 자원인 컴퓨터 CPU의 Idle time(입출력을 기다리는 시간)등을 줄이기 위해 등장하였다 동시에 여러 프로그램을 실행시킨다는 의미이지만 실제로 프로세서는 한순간에 하나의 처리만을 할 수 있으므로 동시에 여러 프로그램을 실행시키지는 않고 매우 짧은 시간(사용자가 느끼지 못할 만큼)동안 여러 프로그램을 돌아가며 수행한다 따라서 사용자는 자신만이 그 컴퓨터를 사용하고 있다고 느낀다. 컴퓨터에서 입출력 시간은 전자적 작업에 비해 매우 시간이 오래걸리는 작업이다 물리적 장치가 직접 움직이는 시간이 고려되기 때문이다 비다중 프로그래밍에서는 사용자의 입력이 필요하거나 출력이 필요한 경우 이러한 긴시간동안 CPU가 유휴상태로 되지만 다중프로그래밍 환경에서는 입출력이 ..
메모리 관리(개요) 운영체제의 역할중 하나가 메모리,프로세스 관리이다 과거에 비해 메모리의 크기가 늘어 났지만 그만큼 프로그램의 크기도 증가 했기 때문이다. 메모리는 주소와 데이터로 구성되어 있다. CPU가 원하는 데이터의 주소를 메모리에 보내면메모리는 CPU에게 해당하는 데이터를 보내준다CPU에서 계산된 결과를 메모리의 특정 주소에 저장하고 명령을 보내면 메모리에 해당하는 주소에 데이터를 저장한다. 프로그램을 개발할 때는 여러 가지의 파일 형태를 가진다. 소스 파일은 고수준언어 또는 어셈블리언어로 개발된 파일을 말한다. 소스 파일은 컴파일러와 어셈블러에 의해 목적 파일로 전환된다. 목적 파일은 소스 파일에 대한 컴파일 또는 어셈블 결과를 나타내는 파일로 기계어로 나타내어진다. 목적 파일을 링크가 실행파일로 바꾼다. 실행파..