1. Address Binding 프로세스의 주소 논리적 주소 : 가상 주소, CPU가 생성하는 주소로 프로세스마다 독립적으로 가지는 주소 공간이기 때문에 프로세스의 내부에서 사용하고 각 프로세스마다 0부터 시작한다. 물리적 주소 : 프로세스가 실행되기 위해 실제로 메모리에 올라가는 위치 💡 모든 프로그램은 실행하기 위해 디스크에서 메인 메모리로 올라와야 하고, 메모리로 올라오기 위해 Address Binding 작업이 이루어 져야 한다. 즉, 어떤 프로그램이 메모리의 어느 위치에, 어떤 물리적 주소에 load될지 결정하는 과정이다 Compile Time 프로세스의 물리적 주소가 컴파일 시 정해짐 ⇒ 절대 주소(Absolute Address) 프로세스 내부에서 사용하는 논리적 주소와 물리적 주소가 동일하..
CS
1. 가상 메모리 (Virtual Memory) 메모리 관리 기법 중 하나로, 실제로 이용 가능한 자원을 추상화하여 사용자들에게 매우 큰 메모리인 것처럼 보이게 만드는 것. 즉, 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식. 요구 페이징 기법 당장 실행에 필요한 페이지만 주기억장치에 적재하는 기법 Valid-Invalid Bit를 사용하여 관리 Page Fault 페이지 테이블을 통해 참조하려는 페이지가 valid(1) 즉, 메모리에 존재하면 페이지 테이블을 통해 논리주소에서 물리주소로 접근 invalid(0)이면 Page fault 발생 2. 페이지 기법 알고리즘 FIFO 가장 오래된 페이지를 내보내는 알고리즘 구현은 간단하지만 성능이 좋지 않음 OPT 앞으로 가장 오랫동안 사용..

1. 메모리 단편화 (Memory Fragmentation) 💡 메모리 공간이 조각처럼 나뉘어져 실제로는 사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태 내부 단편화 실제 사용가능한 메모리보다 적은 메모리의 프로세스가 할당되는 경우 메모리 공간이 낭비되는 상황 외부 단편화 총 메모리 공간은 충분하지만 실제로는 할당할 수 없는 상황 ➡️ 연속 메모리 관리 시 발생하는 단편화 문제를 해결하기 위한 것이 바로 페이징과 세그멘테이션 기법 2. 페이징 (Paging) 프로세스의 주소 공간을 고정 크기 기법을 사용해 물리적 메모리에 불연속적으로 저장하는 방식 프로세스는 Page 단위인 고정 크기로 분할, 메모리는 Frame 단위인 고정 크기로 분할 각 프로세스는 한개의 Page Table을 가짐 Page..

세마포어(Semaphore) 공유된 자원의 데이터 혹은 임계영역 등에 프로세스나 스레드를 나타내는 값을 두어 상호배제 구현, 공유 자원에 접근할 수 있는 최대 허용치만큼 동시 사용자 접근 허용 (동기화 대상이 하나 이상) P 연산 : 임계 영역에 들어가기 전에 수행 V 연산 : 임계 영역에서 나올 때 수행 뮤텍스(Mutex) 키를 기반으로 한 상호배제 기법, 이 객체를 소유한 스레드 혹은 프로세스만이 공유 자원에 접근 가능함 (동기화 대상이 하나) lock : 임계 구역에 들어간 권한 얻음 unlock : 임계 구역을 모두 사용했음을 알림

Race Condition 두 개 이상의 프로세스가 공통 자원을 병행적으로 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 그 실행결과가 같지 않고 달라지는 상황 임계 영역( critical section) 운영체제에서 여러 프로세스가 데이터를 공유하면서 수행될 때 각 프로세스에서 공유 자원에 접근하는 프로그램 코드 부분 임계 영역 충족 조건 상호 배제 (mutual exclusion) : 한 프로세스만 임계 영역에 진입 가능 진행 (progress) : 임계 영역에 한 프로세스가 진입해야함 유한 대기(bounded waiting) : 프로세스가 임계 영역에 진입하기 위해 무한정으로 기다리는 기아 현상이 발생하면 안됨

CPU 스케쥴링 CPU는 한 번에 하나의 프로세스만 실행 가능하므로 CPU 이용률을 극대화하기 위해 어떤 프로세스에 CPU를 할당할지 결정하는 작업 CPU 스케쥴러 CPU스케쥴러는 메모리에 있는 프로세스들 중 어떤 프로세스를 실행할지 선택하고 CPU에 할당해주는 역할을 함 스케쥴링 발생 상황 실행(running) 상태에서 대기(waiting) 상태로 전환 실행(running) 상태에서 준비(ready) 상태로 전환 대기(waiting) 상태에서 준비(ready) 상태로 전환 종료(terminated)될 때 스케쥴링 종류 비선점형 스케쥴링 (non-preemption) 필요한 문맥 교환만 일어나므로 오버 헤드가 상대적으로 적지만 프로세스 배치에 따라 효율성 차이가 크게 남 프로세스가 CPU를 점유하고 있다..
프로세스 운영체제로부터 자원을 할당받은 작업의 단위 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 프로세스는 각각 독립된 메모리 영역을 할당받음 (code, data, stack, heap) 프로세스는 최소 1개의 스레드(main)를 가지고 있음 프로세스 주소 공간 Code : 프로그래머가 작성한 프로그램 함수들의 코드가 cpu가 해석 가능한 기계어 형태로 저장되어 있음 Data : 코드가 실행되면서 사용하는 전역 변수나 각종 데이터들 Stack : 지역 변수와 같은 호출한 함수가 종료되면 되돌아올 임시적인 자료를 저장하는 독립적인 공간. stack은 함수의 호출과 생성되며 함수의 호출이 완료되면 소멸함 Heap : 동적으로 할당되는 데이터들을 위한 공간. 사용자에 의해 메모리 공간이 동적으로 할당되..
ARM 프로세서란 ARM 프로세서복잡한 명령어 방식인 CISC 아키텍처와 달리 적은 트랜지스터를 필요로 하므로 비용, 전력소비 및 열 방출이 적어 가볍고 휴대가능한 배터리 전원 장치에 많이 사용됨 ARM (Advansed RISC Machine) 프로세서란, RISC 아키텍처 기반의 중앙 처리 장치로 임베디드 기기에 주로 사용되는 32bit 프로세서이다. 명렁어 집합 구조 CISC(Complex Instruction Set Computer) 명령어 하나를 처리하는 구조가 복잡 연산 처리시 복잡한 여러 개의 명령어들을 가지고 있는 복합 명령형 프로세서 마이크로 프로그램 제어방식을 채택 가변 길이 명령어 사용 폰 노이만 아키텍쳐 파이프라인 사용이 어려움 RISC(Reduced Instruction Set C..