본문 바로가기

CS/운영체제

(13)
[운영체제] 스레드 & Concurrency 스레드 프로세스 하위에서 실행되는 실행 단위로, 동일 프로세스에 대한 스레드들은 전역 변수의 형태로 정보를 공유할 수 있다. 각각의 스레드마다 PC, stack 및 레지스터와 같은 실행 환경 정보를 가지고 있으며, 프로그램 코드, 데이터 등 공유할 수 있는 정보의 경우 동일 프로세스 아래에서 공유되어 사용된다는 특징이 있다. 스레드에 대한 배경 현대의 프로그램들은 상당히 복잡하며, 다양한 기능을 동시에 제공한다. 예를 들어, 메모장이나 비디오 플레이어 같이 GUI을 이용하는 현대 프로그램들은 화면에 대한 출력 기능 이외에 데이터 처리, 입력 대기, 연산 등 다양한 기능을 추가적으로 가진다. 위와 같은 경우 각각의 기능을 프로세스 단위로 나누어 하나의 프로그램을 구성하는, 멀티 프로세스 프로그램을 고려할 ..
[운영체제] 프로세스 프로세스 현재 실행 중에 있는 프로그램으로, 프로그램을 실행하기 위해 필요한 많은 정보들을 포함한다. Text Section : 실행 대상이 되는 프로그램의 코드. Program Counter : 실행 중인 현재 위치를 알리는 프로세서 레지스터 Stack : 특정 시점의 실행 환경 정보를 담기 위한 자료구조이다. 재귀함수를 실행하는 경우, 재귀호출할 때마다 현재 함수 환경의 정보를 funtion frame 형태로 만들어 현재 파라미터, 리턴 값, 로컬 변수 혹은 레지스터에 저장된 값 등 다양한 정보를 저장하고, 이를 보관해야 후에 해당 함수를 다시 호출 할 수 있게 되는데, 이때 사용되는 자료구조가 Stack 이다. Data Section : 전역 변수를 저장하는 공간. Heap : 동적 메모리 할당을 ..
[운영체제] 운영체제 링커 & 로더 링커 : 여러 오브젝트 파일들을 하나의 실행 가능한 바이너리 파일로 합쳐주는 프로그램으로, 단순 코드뿐만 아니라 해당 코드에 사용된 라이브러리 등도 바이너리 파일에 포함될 수 있다. 로더 : 스토리지에 저장되어 있는 프로그램을 메모리 영역으로 가져오는 프로그램. 로더에 의해 로딩된 프로그램만이 운영체제에 의해 실행될 수 있다. 최근에는 라이브러리들을 링커를 통해 직접 바이너리 파일에 넣기보다는 DLL(Dynamically Linked Libraries)의 형태로 저장한 후, 필요할 때 메모리 상으로 로드 · 공유하는 방식을 이용한다고 한다. 운영체제의 설계(Design) 및 구현(Implementation) 운영체제가 달성하고자 하는 목표는 해당 운영체제가 요구되는 환경, 해당 운영체제를 ..
[운영체제] OS 서비스/프로그램 운영체제 프로그램 또는 사용자가 특정 프로그램이나 서비스를 실행할 수 있도록 환경을 제공하거나 도와주는 시스템으로, 다음과 같은 서비스들을 유저에게 제공하게 된다. Operating System Services User Interface : 유저가 시스템을 사용하는데 도움을 주는 시각적인 인터페이스. CLI(Command Line Interface) : 커맨드 라인 형태의 인터페이스. 커널의 일부로 구현되거나, 시스템 프로그램 형태로 구현된다. 사용자의 커맨드를 읽어 들이고(fetch) 실행한다. 커맨드는 처음부터 지정되어 있을 수도 있지만 ( ls, pwd 등 ), 사용자에 의해 구성된 프로그램일 수도 있다. 사용자 프로그램의 추가는 쉘을 변경하지 않는다. GUI(Graphic User Interfac..
[운영체제] 개요 운영체제(Operating System) 과거 컴퓨터가 천공카드로 동작하던 시절에는 컴퓨터를 전문적으로 관리하며 들어온 일거리(job)을 우선 순위에 따라 배치(Scheduling)하고, 컴퓨터를 동작시키던 "오퍼레이터" 라는 직업이 존재했다. 당시 컴퓨터는 오퍼레이터가 스케줄링한 순서에 따라 프로그램을 "순차적으로" 진행했으며, 동시에 2개 이상의 프로그램을 올리는 것은 불가능했다. 시간이 지나 오퍼레이터가 수행하던 job-scheduling 작업은 오퍼레이팅 시스템, 즉 우리가 아는 OS에 의해 대체되었고, 현재까지 우리는 컴퓨터를 사용할 때 사람 대신 OS을 사용하고 있다. 이러한 OS는 컴퓨터 혹은 하드웨어 등을 운영하기 위한 체계 또는 시스템(프로그램) 으로, 오퍼레이터가 그랬듯이 유저 및 컴퓨..