본문 바로가기

2009/08

(25)
운영체제의 구조 ( 스케줄링 ) 스케줄링이란 CPU 사용권을 요청하는 프로세스들이 여럿 있을 때 이들 경쟁 관계에 있는 프로세스들 중에서 어떤 프로세스에게 CPU를 할당할 것인가를 결정하는 정책이다. 프로세스 스케줄링에 있어 기준은 공평성과 효율성이다. 특정 프로세스에 대해 자원 할당이 불공평 하게 지연되어서는 안되며 , 스케줄링 과정 자체도 효율적이어야 한다. 스케줄링의 목표는 프로세스의 반응 기간과 단위 시간당 처리량을 늘이는 것이다. 선점형 멀티태스킹에서는 운영체제가 시스템 자원 특히 CPU를 완전히 선점한 상태에서 각 프로세스에게 CPU를 할당한다. 이 경우 보통 10ms 정도의 시간 단위로 CPU를 프로세스별로 돌아가면서 할당 비 선점형 멀티태스킹에서는 운영체제가 아니라 프로그램의 프로세슫르이 CPU를 제각ㄱ ㅣ알아서 사용하고..
운영체제의 구조 ( 프로세스 ) 프로세스의 의미는 메모리에 로드되어 실행 중인 프로그램을 말한다. 프로그램이 실행 가능 하려면 CPU가 인식할 수 있는 기계어로 구성되어 디스크에 저장되어야 한다. 이 상황에서 프로그램에 대해 실행 요청이 오면 바이너리 코드는 비로소 메인 메모리에 적재되고 실행 가능한 상태가 되는데, 이와 같은 상태의 프로그램을 가르켜 프로세스 라고 한다. 이런 프로세스는 Task 라고 불리기도 한다. UNIX 시스템에서 임의의 프로그램이 실행되려면 하나의 프로세스(부모) 가 또 다른 프로세스(자식)를 추가로 생성한 다음, 자식 프로세스를 해당 실행 파일과 연관 지음으로써 원하는 프로그램이 실행된다. 즉 , 임의의 프로그램을 실행하라는 명령을 입력받은 프로세스는 자신과 동일한 일을 할 자식 프로세스를 생성하고 이렇게 생..
운영체제의 구조 ( 파일 시스템 ) 파일 시스템이란? 물리적인 디스크 영역에 있는 파일 또는 디렉토리의 집합을 말한다. UNIX 시스템에서는 데이터를 파일 형태로 관리하고, 이런 파일들이 모여 디렉토리 계층 구조가 된다. 파일의 종류에는 일반 데이터 파일, 실행 프로그램인 바이너리 파일, 디바이스 파일 그리고 파일의 집합체로 계층 구조의 정보를 갖는 디렉토리 파일 등이 있다. 물리적인 입출력 장치( 하드디스크 , 프린터 ) 등을 참조하는 파일이다. UNIX 시스템은 디바이스 파일을 이용해서 해당 하드웨어에 접근한다. 즉, 입 출력 장치를 하나의 파일로 인식하여 제어한다. 디바이스 파일들은 /dev 디렉토리 안에 있다. 블록 디바이스 : 입 출력시 커널 내의 특정 버퍼를 이용 ( 하드 디스크 , CD - ROM 등 ) 문자 디바이스 : 버퍼..
UNIX 의 구성 크게 세가지로 나눌 수 있다. 1. 커널 2. 쉘 3. 파일 시스템 UNIX 에서 가장 핵심적인 부분인 커널은 하드웨어와 소프트웨어의 중간에 위치한다. 커널은 항상 메모리에 상주하여 CPU, 메인 메모리, 하드디스크 등의 하드웨어 자원을 제어하면서 , 프로세스 스케줄링, 기억 장치 관리 , 파일 관리 , 시스템 호출 인터페이스 , 입출력 서비스 등의 기능을 사용자에게 제공한다. 명령어 해석기는 커널에 내장되어 있지 않으며, 응용 프로그램으로 독립되어 있다. 사용자와 UNIX 시스템간의 인터페이스 역할을 해주는 프로그램으로서 한마디로 명령어 해석기 라고 할 수 있다. 사용자가 입력한 명령어를 해석하여 그 명령이 실행 가능하도록 해 준다. 그 외에도 쉘은 작업 제어기능과 파이프 기능을 제공하여 명령어의 입력..
UNIX 운영체제 1. 대화식 ( Interactive ) 사용자와 UNIX 간의 상호작용은 명령어 해석기인 Shell(쉘) 에 의하여 이루어진다. 사용자로 부터 명령을 받기 위해 UNIX는 Shell prompt(쉘 프롬프트) 를 화면에 띄운다. 이 프롬프트에 사용자가 명령어를 입력하면 shell(명령어 해석기)를 통해 시스템에 명령을 전달하고 동작을 한다. 이러한 과정은 컴퓨터와 사용자간의 대화하는 것과 유사하다. 2.멀티태스킹 ( Multitasking ) 동시에 여러 명령을 처리하는 기능. UNIX는 개발 당시부터 멀티태스킹 환경을 염두에 두고 개발하였기 때문에 안정적이고 효율적이다. 3. 멀티 유저 ( Multi-user ) 터미널(terminal)이나 네트워크를 통해서 해당 컴퓨터에 접속하여 동시에 여러 사용자..
그래프 알고리즘. MAXV : vertex의 최대 개수 MAXDEGREE : 차수의 최대 값 typedef struct { int edges[MAXV+1][MAXDEGREE]; //연결상태 int degree[MAXV+1]; // 각 차수 int nvertices; // vertex의 개수 int nedges; // edge의 개수 } BFS ( 너비 우선 탐색 qseudo code ) BFS(G, s) // G 그래프 객체 , S 스타트 vertex for each vertex u ∈ V – {s} do color[u] ← GRAY d[u] ← ∞ π[u] ← NIL color[s] ← BLUE d[s] ← 0 π[s] ← NIL ENQUEUE(Q, s) while (Q ≠ φ) do u ← DEQUEUE(Q) for ..
LEX 와 YACC 의 동작 원리 LEX Lex 는 기본적으로 단어들로 이루어진 문장에서 지정한 Token을 하나하나 꺼내오게 된다. yylex() 라는 함수는 lex 에 의하여 구성된 lexer 의 호출 함수 이다. 다시 말해 yylex() 함수를 호출하면 lexer 는 주어진 문장에서 정해진 규칙에 의하여 토큰을 하나하나 꺼내어 온다. 이렇게 꺼내어 오면서 특정한 등록된, 즉 각 토큰에 정해놓은 함수 또는 문장( c 함수 또는 c 문장) 을 호출하게 된다. 즉 lexer 는 yylex() 에 의하여 문장에서 토콘을 꺼내오는 것을 시작하며 모든 토큰이 다 읽혀 질때까지 yylex() 를 끝내지 않는다. Lex 혼자서도 어느정도 구문 분석을 하여 수행할 수 있다. Lex 에 의하여 만들어진 lexer 자신도 얼마든지 yacc 없이 특정한..
Vi terminal 관리 programs 보호되어 있는 글입니다.