본문 바로가기

Computer Science18

가상 메모리 가상 메모리 (Virtual Memory System) 실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기가 한계가 있음 폰노이만 구조 기반이므로 코드는 메모리에 반드시 있어야 한다. 실제 특정시간에 특정 프로세스에서 참조하는 메모리는 한정적이다. 실제로 프로세스가 필요로 하는 공간만 물리 메모리(RAM)에 넣고 해당 주소를 참조하고 있는다. 가상메모리 기본 아이디어 프로세스는 가상 주소를 사용하고 실제 해당 주소에서 데이터를 읽고 쓸때만 물리주소로 바꿔준다. virtual address(가상 주소) - 프로세스가 참조하는 주소 physical address(물리 주소) - 실제 메모리 주소 MMU(Memory Management Unit) CPU에 코드 실행시 가상 주소 메모리 접근이 필요할.. 2022. 1. 1.
스레드 (Thread) 스레드의 개념 Light Weight Process 라고도 한다. 프로세스 프로세스 간에는 각 프로세스의 데이터 접근이 불가능하다 스레드 하나의 프로세스에 여러개의 스레드 생성이 가능하다. 스레드들은 동시에 실행이 가능하다. 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능하다. Stack영역과 Register(SP, PC)는 스레드 마다 나뉜다. ( Thread 1 Stack Pointer, Thread 2 Stack Pointer, Thread 3 Stack Pointer ) Heap, Data, Code(Text) 영역은 공유한다. 최근 CPU는 멀티 코어를 가지므로, Thread를 여러개 만들어 멀티 코어의 활용도를 높인다. 멀티 프로세싱 여러 cpu가 하나의 프로세스를 병렬처리하여 실.. 2021. 12. 29.
프로세스간 커뮤니케이션 (IPC) IPC (Inter Process Communication) IPC는 프로세스간 커뮤니케이션을 하기 위해 사용되는 기법 원칙적으로 프로세스는 다른 프로세스의 공간을 접근할 수 없다. (프로세스의 데이터/코드가 바뀔 수 있어 위험하기 때문) 프로세스간 통신이 필요한 이유 성능을 높이기 위해 여러 프로세스를 만들어서 동시에 실행하기 때문에 이 때 프로세스간 상태 확인 및 데이터 송수신이 필요하다. fork() 시스템콜 함수로 자신을 복사해서 새로운 프로세스를 만들 수 있다. (부모 프로세스, 자식 프로세스) 예를 들어 1~10000까지 더하는 프로그램을 실행할 때 fork()함수로 10개 프로세스를 만들어 각각 1000씩을 더한 후에 각각 더한 값을 모두 합하면 10배 빠르게 동작이 가능하다. 단 각각 더한.. 2021. 12. 28.
프로세스의 구조와 컨텍스트 스위칭 일반적인 프로세스의 구성 stack (스택프레임) 함수 호출 또는 로컬변수 함수 내부에도 별도 변수를 지정할 수 있으며 함수 실행이 끝나면 사라진다. 때문에 함수가 실행되는 동안만 변수를 저장되는 공간이 필요한데 이 공간을 stack이라 한다. 해당 변수를 각각 함수가 끝날때 실행될 영역인 return address와 함께 stack에 저장하고 해당 함수 실행이 끝나면 각각의 변수를 지우고 return address를 찾아간 후 return address 또한 지우고 다음 코드를 실행한다. 함수 내부에서 또다른 함수가 실행되는 경우 두번째로 실행된 함수 내부의 변수와 return address가 더 나중에 저장이 되고 이 함수가 더 먼저 종료되기 때문에 이 함수의 변수와 return address가 먼저.. 2021. 12. 27.
인터럽트 인터럽트란 cpu가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생하여 처리가 필요할 경우에 cpu에 알려서 처리하는 기술 특정 이벤트가 발생했을때 cpu에 인터럽트를 걸어준다. 이벤트와 인터럽트 인터럽트는 일종의 이벤트로 불림 이벤트에 맞게 운영체제가 처리한다. 인터럽트 필요 이유 어느 한순간 cpu가 실행하는 명령은 하나이기 때문에 입출력 하드위에 등의 장치나 예외상항이 발생한 경우 cpu가 해당 처리를 할 수 있도록 cpu에 알려줘야한다. 인터럽트 처리 예시 예외 상황 핸들링 코드에 오류가 있어 해당 응용프로그램을 종료(Kill) 하는 경우 해당 예외사항을 cpu에 알려주기 위해 인터럽트가 필요하다. ex) 숫자를 0으로 나누는 경우의 예시 코드 #include in.. 2021. 12. 26.
프로세스 스케줄링 알고리즘 프로세스란? 메모리에 올려져서 실행 중인 프로그램 프로세스라는 용어는 작업, task, job 이라는 용어와 혼용된다. 응용 프로그램이 프로세스는 아니며 응용 프로그램은 여러 개의 프로세스로 이루어질 수 있다. 하나의 응용 프로그램은 여러 개의 프로세스로(프로그램)가 상호작용을 하면서 실행될 수도 있다 여러 프로그램을 만들어서, 서로 통신하면서 프로그램을 작성할 수 있다 (IPC 기법) 스케줄러와 프로세스의 관계 누가 프로세스 실행을 관리할까 -> 스케줄러 스케줄러가 스케줄링 하는 단위 -> 프로세스 스케줄링 알고리즘 어느 순서대로 프로세스를 실행시킬까를 정하는 알고리즘 스케줄링 알고리즘의 목표의 예시 시분할 시스템: 프로세스 응답시간을 가능한 짧게 멀티 프로그래밍: cpu 활용도를 최대로 높게 스케줄링.. 2021. 12. 25.
운영체제 스케줄링의 종류 스케줄링 종류 배치 처리 시스템 프로그램을 순차적으로 실행될 수 있드록 하는 시스템 큐 구조와 비슷하다 문제점 특정 프로그램은 실행시간이 너무 오래 걸려서 다른 프로그램 실행을 위해 오랜 시간을 기다려야 할 수 있음 ex) 음악을 들으면서 문서 작성이 불가능하다 다양한 프로그램 동시 실행이 불가능하다 (동시성) 여러 사용자가 동시에 하나의 컴퓨터를 사용할 수 없다 (다중 사용자 지원) 시분할 시스템 다중 사용자 지원을 위해 응답 시간을 최소화 하는 시스템 멀티 태스킹 단일 CPU에서 여러 응용프로그램이 동시에 실행되는 것 처럼 보이도록 하는 시스템 실제 멀티 태스킹 (리눅스) 10~20ms 마다 실행 프로그램이 바뀌어 사용자에게는 동시에 실행되는 것처럼 보인다 특정 시점에 실행되고 있는 프로그램은 하나이.. 2021. 12. 20.
운영체제의 구조 운영체제란 (Operating System 또는 OS) 운영체제 역할 1. 시스템 자원 관리자 시스템 자원이란 ? CPU (중앙처리장치), Memory (RAM), I/O Devices (입출력장치), 저장매체 (SSD, HDD) 등 컴퓨터 하드웨어 컴퓨터 하드웨어는 스스로 할 수 있는 것이 없으며 운영체제가 관리한다. 2. 사용자와 컴퓨터간의 커뮤니케이션 지원 3. 응용 프로그램 제어 응용 프로그램이란? 응용 프로그램 (Application) = 소프트웨어 운영체제 또한 소프트웨어이다. 운영체제는 저장매체에 설치되며 컴퓨터를 켜면 운영체제는 Memory에 올라간다. 참고: https://namu.wiki/w/%ED%8F%B0%EB%85%B8%EC%9D%B4%EB%A7%8C%20%EA%B5%AC%EC%A.. 2021. 12. 19.