일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Entity
- 백준
- 리눅스
- selenium
- 셀레니움
- descriptive statistics
- 리눅스 마스터 1급
- Polymolphism
- python
- dbms
- Physical Scheme
- Java
- BFS
- Inheritance
- Reference Type
- X.org
- X윈도우
- Entity Set
- Unity
- Operator
- spring
- Mac
- Binary Search
- preprocessing
- literal
- External Scheme
- OOP
- 자바
- Class
- systemd
- Today
- Total
목록OS (72)
Byeol Lo
기본적으로 한 운영체제에서 컴파일 된 응용 프로그램은 다른 운영 체제에서 실행할 수 없다. 해당 운영 체제의 아키텍처에 맞게 컴파일이 이미 되어 있기 때문에, 실행을 하려면 해당 기계어 들을 다시 다른 운영 체제와 아키텍처에 맞춰주어야 하기 때문이다. 이 문제에서 각 운영체제가 응용 프로그램 사용을 위해 고유한 시스템 호출 세트를 제공하고, 시스템 호출은 운영 체제가 응용 프로그램을 사용하기 위해 제공하는 서비스 세트의 일부다. 시스템 호출이 어떻게든 통일된다고 해도 다른 장벽들이 있어서 우리가 다른 운영체제에서 응용 프로그램을 실행하는 것을 어렵게 만든다. 응용 프로그램을 여러 운영체제에서 실행되게 만드는 방법은 세가지가 있다. 응용 프로그램은 여러 운영체제에서 사용할 수 있는 인터프리터가 있는 int..
주로 거의 모든 프로그램들은 디스크 상에서 이진 실행 파일로 존재한다. CPU에 실행되기 위해, 프로그램은 메모리로 가져와야 하고, 프로세스의 컨텍스트 안에 배치되어야 한다. 소스 파일은 어떤 물리적 메모리에도 로드 될 수 있도록 설계된 객체 파일로 컴파일 된다. 이 형식은 relocatable object file이라고 불리며, 그 다음에 Linker가 이러한 relocatable object file을 single binary executable file로 결합한다. 이 과정을 Linking 과정이라고 하는데, 이 단계 동안에 표준 C 또는 수학 라이브러리(-lm 플래그로 지정)와 같은 다른 객체 파일이나 라이브러리도 포함될 수 있다. Loader는 binary executable file을 메모리에..
현대 시스템의 또 다른 측면은 시스템 서비스의 집합으로 볼 수 있다. 가장 낮은 단계는 하드웨어, 다음은 운영 체제, 그 다음은 시스템 서비스, 그리고 마지막으로 응용 프로그램이 계층적 구조를 이루고 있었다. 시스템 서비스, 또한 시스템 유틸리티로 알려져 있으며, 프로그램 개발 및 실행을 위한 편리한 환경을 제공한다. 그 중 일부는 단순히 시스템 호출에 대한 사용자 인터페이스이며, 다른 것들은 상당히 복잡하다. File Management - 파일과 디렉터리를 생성, 삭제, 복사, 이름 바꾸기, 인쇄, 나열, 액세스, 디렉토리들과 파일들을 조작할 수 있다. Status Information - 날짜, 시간, 사용 가능한 메모리, 디스크 공간의 양, 사용자 수 등을 요청할 수 있다. 더 나아가서는 성능, ..
System calls는 운영체제에서 제공하는 서비스에 대한 인터페이스를 제공한다. 이러한 호출은 일반적으로 C와 C++로 작성된 함수로 제공되며, 저수준의 작업(하드웨어를 직접 접근하는 작업)은 어셈블리 언어 명령어를 사용하여 작성해야 할 수도 있다. 2.3.1 Application Programming Interface 시스템은 초당 수천 번의 시스템 호출을 수행한다. 그러나 대부분의 프로그래머들은 그걸 실감하진 않는다. 일반적으로 프로그램 개발자들은 API(Application Programming Interface)에 따라 프로그램을 설계한다. API는 프로그래머에게 사용 가능한 함수 세트를 지정하고, 각 함수에 전달되는 매개변수와 프로그래머가 기대할 수 있는 반환 값들을 포함한다. 우리가 가장 ..
사용자가 운영체제와 상호작용하는 세 가지 기본적인 방법에는 CLI와 두가지 유형의 GUI가 포함된다. 이 절에서는 간단하게 어떤 인터페이스가 있는지 소개만 하고 넘어간다(굳이 CLI가 어떤건지, GUI가 어떤건지는 경험만 해본다면 다 알 수 있기 때문). 2.2.1 Command Interpreters 대부분의 운영체제, 리눅스, 유닉스, 윈도우 등은 프로세스가 시작될 때나 사용자가 처음 로그인 할 때, command interpreter를 특별한 프로그램으로 인식을 하는데, 다양한 command intepreter들을 선택할 수 있는 시스템에서는, 이러한 interpreter들을 shell 이라고 부른다. 보통 Unix, Linux 시스템에서는 C Shell, Bourne-Again shell, Kor..
운영체제는 프로그램을 실행하기 위한 환경을 제공하는데, 프로그램 및 해당 프로그램의 사용자에게 일부 서비스를 제공한다고 보면 된다. User Interface - 거의 모든 운영 체제에는 사용자 인터페이스(UI)가 있다. 이 인터페이스는 여러 형태로 나타날 수 있는데, 가장 흔한 것은 GUI이다. 그 외에 CLI, NUI 등등 많다. Program Execution - 시스템은 프로그램을 메모리로 로드하고 그 프로그램을 실행할 수 있어야 한다. 프로그램은 실행을 정상적으로 또는 오류가 일어나는 형태로 종료할 수 있어야 한다. I/O Operations - 실행 중인 프로그램은 파일 또는 I/O 장치를 사용할 수 있으며, 특정 장치에 대해서는 특별한 기능이 필요할 수 있다(예: 네트워크 인터페이스에서 읽기..
이제 운영 체제 구현에 중요한 주제인 시스템 내의 data structure에 대해 살펴보자. 1.9.1 Lists, Stacks, and Queues 배열은 각 요소에 직접 액세스 할 수 있는 간단한 데이터 구조다. 주 메모리 또한 이러한 배열로 구성되어 있기 때문에 저장되는 데이터 항목이 한 바이트보다 크면 여러 바이트가 항목에 할당되고 "항목 번호 × 항목 크기" 로 주소가 지정된다. 하지만 크기가 다양한 항목을 저장하거나 남은 항목의 상대적 위치를 보존해야하는 경우에는 배열이 다른 데이터 구조로 대체된다. Singly Linked List - 그 다음 항목을 가르킴. 마지막은 null Doubly Linked List - Singly Linked List에서 확장되어 그 이전의 항목도 가르킴 Ci..
분산 시스템은 물리적으로 분리되고 가능한 경우에는 heterogeneous computer system의 모음으로도 볼 수 있으며, 사용자에게 시스템이 유지하는 다양한 리소스에 대한 접근을 제공하기 위해 네트워크로 연결되게 된다. 공유 리소스에 대한 접근은 계산 속도, 기능, 데이터 가용성 및 신뢰성을 증가시키며, 일부 운영체제는 네트워크 액세스를 파일 액세스의 형태로 일반화 하여 네트워크 세부 정보를 네트워크 인터페이스의 장치 드라이버에 포함시킨다. 다른 운영체제는 사용자가 명시적으로 네트워크 기능을 호출하도록 한다. 일반적으로 시스템은 두 가지 모드의 혼합을 포함하는데 예를 들어서 FTP와 NFS가 있다. 분산 시스템을 생성하는 프로토콜은 해당 시스템의 유틸리티와 인기에 큰 영향을 줄 수 있다. 즉,..
가상화 기술은 단일 컴퓨터의 하드웨어(CPU, Memory, Disk Drive, NIC, 등)를 여러 다른 실행 환경으로 추상화하는 기술이다. 각각의 분리된 환경이 자체적인 개인용 컴퓨터에서 실행되는 것처럼 보이도록 만든다. 이러한 환경은 서로 다른 개별 운영 체제로 볼 수 있고, 동시에 실행되며, 서로 상호 작용할 수 있다. 가상 머신의 사용자는 단일 운영 체제 내에서 다른 운영체제로의 전환이 가능하다. 일반적으로 가상화 소프트웨어는 에뮬레이션을 포함한 클래스의 하나인데, Emulation은 소프트웨어에서 컴퓨터 하드웨어를 시뮬레이션 하는 것으로, 소스 CPU 유형이 대상 CPU 유형과 다를 때 주로 사용된다. 애플에서는 Rosetta라는 에뮬레이션이 그 예이다. 하지만 에뮬레이션은 많은 자원이 할당..
컴퓨터 시스템이 다중 사용자 및 다중 프로세스를 지원하는 경우에 데이터 접근은 운영 체제로부터 적절한 권한을 얻은 프로세스만 가능하도록 제한된다. 이를 위해 메모리, CPU, 기타 리소스에 대한 접근이 제어되고, 장치 제어 레지스터는 사용자가 접근할 수 없어서 주변 장치의 무결성(integrity, 데이터나 시스템이 원래 상태나 조건을 유지하고 있는 것)이 보호된다. Protection(보안)이란 컴퓨터 시스템에서 정의된 자원에 대한 프로세스나 사용자의 접근을 제어하는 장치이다. 이 메커니즘은 적용될 제어를 지정하고 이를 시행하는 수단을 제공해야 한다. 보안은 구성 요소 하위 시스템 간 인터페이스에서 잠재적 오류를 감지함으로써 신뢰성을 향상시킬 수 있다. 인터페이스 오류의 조기 감지는 종종 정상 작동 중..