전체 글
-
XV6 - 이론 정리_2CS/OS 2022. 5. 13. 18:33
이제부터는 XV6가 어떻게 동작하는 지 실제 부팅부터 알아볼 겁니다. Step1 - Booting PC powers on -> load bootloader(bootasm.S, bootmain.c) -> load kernel -> execute kernel entry 컴퓨터는 하드웨어를 초기화 및 부트로더라는 프로그램(bootasm.S)을 실행시킨다. 부트로더(xv6에서 bootasm.S, bootmain.c의 코드로 구성된다.)는 항상 디스크의 첫번째 섹터에 위치하며 커널 이미지를 메모리로 로드한다. 부트로더는 항상 xv6 kernel을 물리메모리 0x100000 번지에 위치시킨다. 더 낮은 번지의 물리메모리는 I/O device에 관해 쓰인다. 부트로더가 xv6의 entry(entry.S)에 진입함으로..
-
XV6 - 이론 정리_1CS/OS 2022. 5. 13. 18:03
앞서 배운 OS 내용을 바탕으로 실제 MIT 교육용 코드에서 어떻게 동작하는지 알아보겠습니다. XV6 라는 OS를 가져와서 사용하였습니다. OS 중요 요소는 Time-sharing / Isolation / Interaction으로 나눌 수 있는데, Time-sharing은 하나의 Program이 독점하는 것을 막기 위해, Isolation은 사용자에게 모든 권한을 주지 않으며, Kernel 영역에서만 Resource를 접근하기 위함이라고 설명하였다. 그렇다면, Interaction은 어떻게 이루어질까? Unix System에서는 Process간에 file descriptor를 통하여 Interaction이 발생한다. File Descriptor가 존재함으로써, Kernel이 예외 사항을 처리 할 수 있다..
-
3. Dual Mode / System Call / OS ServiceCS/OS 2022. 5. 11. 15:01
앞선 장에서 언급하였듯이, OS는 App 이 Hardware 접근을 직접하지 못하도록 한다고 하였다. 사용자가 하드웨어의 자원에 접근하는 것은 매우 위험한 동작이다. 만약에 Hardware 접근을 직접 할 수 있다면, 서버 컴퓨터에 접근하여 강제 종료 명령어를 넣는다던지 하여 동작을 멈출 수 있다. 이러한 문제들을 막기 위해 Dual Mode라는 개념이 나왔다. Dual Mode CPU 내부의 레지스터(register)의 비트(bit)를 활용하여 플래그(flag) User Mode = 0 / Kernel Mode = 1 1. User Mode Application 과 같이 User가 사용하고 있는 영역 Hardware resource 접근 X ( 요청하려면 System Call 필요 ) 2. Superv..
-
2.OS 역사CS/OS 2022. 5. 6. 14:46
운영체제는 컴퓨터가 발전하면서 같이 발전하게 되었다. 초기 컴퓨터는 크게 3가지로 구성되었다. 카드 리더, 프로세서, 프린터이다. 카드 리더는 입력기이다. 입력은 종이에 입력할 코드에 맞는 구멍을 뚫어서 넣어주는 방식이었다. 프로세서는 현재와 비슷한 계산하는 역할이었고, 프린터는 입력에 대한 결과를 종이에 찍어서 보여주었다. 1. Batch Processing System 프로그램을 수행할 때마다 컴파일->링크->로딩 순서를 오퍼레이터가 직접 입력해주었다. 이러한 과정을 자동화한 것이 batch processing system 이다 위 과정을 하나의 프로그램으로 작성하여 프로세서의 메모리안에 할당해주었는데, 이 프로그램을 resident monitor라고 불렀다. 2. Multi Programming S..
-
1. 운영체제(OS)란?CS/OS 2022. 5. 6. 14:22
운영체제(Operating System)은 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다. 우리가 사용하는 모든 프로그램들은 OS에서 관리 및 제어한다. E.g) Window / Linux / Mac 1. 운영체제의 목적 컴퓨터의 하드웨어를 관리 및 사용자에게 편의를 제공하는 목적 하드웨어에는 CPU / Memory / Disk / KeyBoard / Mouse / Monitor / 등이 있어 이를 관리가 잘되어야 좋은 OS라고 할 수 있다. OS가 없다면 사용자는 모든 하드웨어 관리를 일일히 해주어야 하기 때문에 엄청난 번거로움이 발생한다. 즉, 운영체제는 컴퓨터의 성능을 높이고(performance), 사용자에게 편의성 제공(Convenience)을 목적으로 하는 컴퓨터 하드웨어 관리하는 프로..
-
6. ThreadCS/OS 2022. 4. 27. 23:09
프로세스 생성 원리 프로세스는 프로세스에 의해 만들어진다. 컴퓨터가 부팅이 되면 운영체제가 메모리에 올라오는데 운영체제가 처음으로 수행하는 일 중에 하나는 최초의 프로세스를 생성하는 것이다. 처음 만들어진 프로세스가 다른 프로세스를 만들고 그 프로세스가 또 다른 프로세스를 만드는 과정을 반복한다. 최초의 프로세스는 Init이다. init은 UNIX 운영체제 기준이다. 여러 다른 프로세스들이 생성되면 위 그림처럼 트리로 나타낼 수 있다. 프로세스는 각각 고유의 번호를 갖는데 이를 PID(Process Identifirer)라고 한다. Process 생성하기 위해서는 System Call( Fork() ) -> Process 내에서 File 실행 System call( exec() ) -> Process 종..
-
4. ProcessCS/OS 2022. 4. 27. 20:49
Multi Tasking( Multi Processing ) 운영체제(OS)를 통해 여러 프로세스(프로그램)를 실행하고 관리 ( UNIX / WINDOW ) 즉, OS를 통해 CPU가 작업하는데 필요한 자원(시간)을 프로세스 또는 스레드간에 나누는 행위 Multi User -> UNIX / NT SEVER UNIX =C언어로 작성 / Kernel 구조 / 확장성 Process 프로그램이 실행 중이라는 것은 디스크에 저장되어 있던 프로그램을 메모리에 저장한 뒤 운영체제의 제어를 받을 수 있는 상태가 된 것을 의미 메인 메모리에 할당되어 실행중인 상태인 프로그램 프로세스는 job, task 등으로 불리기도 한다. 메모리 구조 Stack , Heap , Data , Code로 구성 1. STACK - 데이터를..
-
[Algorithm] - 문자열 매칭 ( 보이어무어 알고리즘 )Algorithm/Algorithm 2022. 4. 27. 02:20
보이어-무어 알고리즘 부르트포스, KMP 알고리즘보다 향상된 알고리즘이며 더 자주 사용된다고 한다. 보이어-무어 알고리즘의 작동은 KMP 알고리즘과 유사하게 불필요한 비교는 건너뛰고 유의미한 비교만 진행하겠다. 알고리즘 KMP 알고리즘의 개선이 된 알고리즘으로, 시간 복잡도는 최악의 경우 O(N) 평균적인 경우 O(N/M)입니다. 이전에 KMP 알고리즘이 O(N+M)이기 때문에 향상이 이루어졌습니다. KMP 알고리즘의 경우에는 접두사와 접미사가 같은 최대길이를 저장하는 배열을 만들어 앞에서부터 검사를 진행하였다면, 보이어-무어 알고리즘은 문자열을 검색할때 주로 뒤에서 부터 확인합니다. KMP 알고리즘과 같이 건너뛰는 경우를 저장하는 배열(skip_table)을 만들어야 합니다. 이때 배열은 본문 문자열이..