본문 바로가기

운영체제6

시스템 콜, 시스템 호출(System Call)이란? 시스템 콜, 시스템 호출(System Call)이란? 운영체제는 다양한 서비스를 수행하기 위해 하드웨어를 직접 관리한다. 반면 응용 프로그램은 운영체제가 제공하는 인터페이스를 통해서만 하드웨어와 통신할 수 있다. 운영체제가 제공하는 이러한 인터페이스를 '시스템 콜(System Call)'이라고 한다. 시스템 콜은 이러한 커널 영역의 기능을 사용자 모드가 사용 가능하게 한다. 즉, 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 수행할 수 있게 해 준다. (즉, 응용프로그램은 시스템 콜을 사용해서 원하는 기능을 수행할 수 있음) 보통 직접적으로 시스템 콜을 사용하기보다는 API(라이브러리 함수)를 통해 제어한다. 위의 그림처럼 운영체제는 메모리에 프로그램 적재, I/O 처리, 파일시스템 처리 등 여러 서.. 2024. 2. 5.
커널 오브젝트(Kernel Object)에 대해서 커널(kernel)이란 컴퓨터를 운영하는 데 있어서 중심이 되는 운영체제의 핵심 부분을 뜻한다. 일반적으로 '커널'이라는 용어와 '운영체제'라는 용어는 같은 의미로 사용되기 때문에 굳이 운영체제에서 커널이 차지하는 영역을 명확하게 구분할 필요는 없다. 커널 오브젝트 : 커널에서 관리하는 중요한 정보를 담아둔 데이터 블록 파일을 실제 생성하고 관리하는 주체는 운영체제이다. 운영체제는 관리를 위해 '접근 정보, 어디까지 읽었는지에 대한 정보'등을 필요로 하는데, 이러한 정보들을 담아둔 블록이 바로 커널 오브젝트다. 리소스를 생성하게 되면 그에 해당하는 커널 오브젝트가 생성된다. 각 커널 오브젝트는 리소스의 특성에 따라 가지는 정보가 다름 커널 오브젝트(Kernel Object)의 이해 프로세스를 생성하고(프.. 2024. 1. 24.
스레드(Thread)란 스레드 오늘날의 운영체제들은 프로세스를 효율적으로 사용하고, 작업의 유연성을 얻기 위해 멀티스레드를 지원한다. 스레드의 정의 프로세스가 생성되면 CPU 스케줄러는 프로세스가 해야 할 일을 CPU에 전달하고, 실제 작업은 CPU가 수행한다. 이때 CPU 스케줄러가 CPU에 전달하는 일 하나가 스레드이다. 그러므로 CPU가 처리하는 작업 단위는 프로세스로부터 전달받은 스레드인 것이다. 운영체제의 입장에서 작업 단위는 프로세스이고, CPU입장에서의 작업 단위는 스레드인 것이다. 따라서 프로세스 입장에서는 스레드를 다음과 같이 정의할 수 있다. 스레드 : 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위. 작업(job)의 크기 크기 순서로 나열하면 다음과 같다. Thread(operat.. 2023. 7. 31.
프로세스 제어 블록 (PCB, Process Control Block)란? 프로세스 제어 블록(PCB)이란? 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓은 곳으로, 프로세스의 상태 정보를 저장하는 구조체이다. 프로세스 상태 관리와 문맥교환(Context Switching)을 위해 필요하다. PCB는 프로세스 생성 시 만들어지며 주기억장치에 유지된다. 프로세스 제어 블록(PCB)에 포함되는 정보들 Process ID : 프로세스를 구분하는 ID Process state : 각 State 들의 상태를 저장한다. Program Counter : 다음 Instruction의 주소를 저장한다. CPU는 이 값을 참조해서 Process의 Instruction을 수행한다. Register : Accumulator, CPU Register, General Register 등을 포함한.. 2023. 7. 20.
프로그램의 실행 프로그램이 실행되고 있다 '프로그램이 실행되고 있다'는 것은 컴퓨터 시스템 차원에서 볼 때 크게 두 가지 중요한 의미를 가진다. 디스크에 존재하던 실행파일(.exe)이 메모리에 적재(load)된다는 의미 프로그램이 CPU를 할당받고 명령을 수행하고 있는 상태 일단 우리가 알고 있는 작동은 CPU는 디스크에 존재하는 실행파일이 메모리에 올라가면 프로그램은 CPU를 할당받고 명령을 수행한다. 하지만 여러 프로그램이 짧은 시간 단위로 CPU를 나눠 쓰고, 이들 프로그램이 메모리에 동시에 적재되어 있을 수 있으므로 여러 프로그램이 동시에 실행된다는 말을 보편적으로 사용하는 것이다. 실행파일이 메모리에 적재될 때 실행파일 전체가 메모리에 한꺼번에 올라가기 보다는 일부분만 메모리에 올라가고 나머지는 디스크의 특정 .. 2023. 7. 20.
메모리 구조(Memory Structure)에 대해서 메모리 구조 우리가 exe 파일을 실행하면 운영체제는 프로그램에 정의된 명령어(코드)를 바탕으로 메모리에 프로세스를 적재한다. 해당 프로세스를 위한 Code, Data, Heap, Stack 영역이 생성된다. 메모리 구조 코드 영역 데이터 영역 힙 영역 스택 영역 코드 영역 (Code) 소스코드가 기계어 형태로 저장된다 CPU가 저장된 명령어를 프로그램 카운터에 의해 하나씩 가져가 처리하게 된다. 프로그램 시작부터 종료까지 메모리에 있게 된다. 컴파일 타임에 결정되고, 중간에 코드가 변경되지 않도록 Read-Only 형태로 저장된다. 데이터 영역 (Data) 전역변수, static 변수가 저장된다. 프로그램 시작과 동시에 할당되고 프로그램이 종료되어야 메모리가 해제된다. 실행 도중 변수 값이 변경될 수 .. 2023. 2. 17.