본문 바로가기
728x90
반응형

Computer Science/운영체제13

13. 부팅 부팅 : 운영체제 커널을 storage에서 특정 주소의 물리 메모리로 복사하고, 커널의 처음 실행위치로 PC를 가져다 놓는 프로그램 ※ 패스트캠퍼스 [컴퓨터 전공자 따라잡기 온라인 완주반] 강의를 참고하여 작성하였습니다. 2022. 8. 22.
12. 파일시스템 파일시스템: 운영체제가 저장매체에 파일을 쓰기 위한 자료구조 / 알고리즘 파일시스템이 만들어진 이유? - 0과 1의 데이터를 비트 단위로 관리하기에 오버헤드가 너무 큼 -> 블록단위로 관리(고유 번호 부여) -> 사용자가 각 블록 고유 번호 관리가 어려움 -> 사용자는 파일단위로 관리, 각 파일은 블록 단위로 관리 파일 사이즈가 가변적인 경우가 있으므로 불연속 공간에 파일 저장 기능 지원이 필요함 - 블록 체인 : 블록을 linked list로 연결 - index block 기법 : 각 블록에 대한 위치 정보를 기록해서, 한번에 끝 블록을 찾아갈 수 있도록 함 windows : fat, fat32, ntfs linux : ext2, ext3, ext4 (inode 방식 사용) 파일 시스템과 시스템 콜 :.. 2022. 8. 22.
11. 가상메모리 가상메모리(virtual memory system) 실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기가 한계가 있기 때문에 가상 메모리는 여러 프로세스 동시 실행 시스템에서 반드시 필요하다. ex ) 메모리가 4gb라고 할 때 한 프로세스가 한번에 4GB를 전부 사용하지 않기 때문에 일부만 메모리에 올려둔다. 이 때 실제 메모리 주소를 물리 주소라고 하고, 프로세스가 참조하는 주소를 가상 주소라고 한다. 가상주소와 물리주소를 계속 변환하다보니 시간이 오래걸려서 주소를 변환해주는 하드웨어 장치인 MMU(Memory Management Unit)를 사용한다. : cpu -> virtual address -> mmu - physical address -> memory 페이징 시스템 페이징 : 크기.. 2022. 3. 4.
10.Thread 프로세스 간에는 각 프로세스의 데이터 접근이 불가한데 스레드는 하나의 프로세스에 여러개를 생성하여 프로세스의 데이터에 모두 접근할 수 있다. Multi Tasking VS Multi Processing VS Multi Thread 멀티 태스킹 : 하나의 cpu, 여러개 process 멀티 프로세싱 : 여러 cpu, 여러개 process : 하나의 process를 여러 cpu에서 실행하는 방법 ? Thread를 여러개 만들어서 해결 가능- 최근 cpu가 멀티 코어를 가지고 있음 멀티스레드 Thread 장점 사용자에 대한 응답성 향상 자원 공유 효율 코드 간결성 Thread 단점 스레드 중 한 스레드만 문제가 생겨도 전체 프로세스가 영향을 받음 스레드를 많이 생성하면 context switching이 많이 .. 2021. 12. 14.
09. 프로세스와 IPC 여러 프로세스를 만들어서 동시 실행을 위하여 프로세스간 통신이 필요하다. 하지만 프로세스들이 서로의 공간을 쉽게 접근하면 데이터/코드가 변경될 수 있으므로 굉장히 위험하다. 그래서 프로세스간 통신을 위한 기법이 나오게된다. ex ) 웹서버 ex ) 리눅스 : 리눅스의 프로세스간 공간은 완전히 분리되어 있다. 사용자 공간은 절대 접근할 수 없지만 커널 공간은 공유한다. 프로세스간 통신을 위한 특별한 기법이 필요한데 이때 IPC기법 등의 기법이 필요하다. 1. IPC ? = InterProcess Communication 1 ) Pipe : 단방향 통신, fork()로 자식 프로세스를 만들었을 때 부모와 자식간의 통신을 한다 fork() 라는 시스템콜은 호출하면 현재 프로세스(부모)를 똑같이 복사한 새로운(.. 2021. 8. 1.
08. 프로세스와 Context Switching 1. PCB(Process Control/Context Blocck) 에 저장 - PCB : 프로세스가 실행중인 상태를 캡쳐/구조화해서 저장한다. - 아래의 정보를 갖고 있다. Process ID Register 값(PC, SP) Scheduling Info(Process State) : 프로세스가 현재 ready, block, running 상태인지에 대한 정보 Memory Info(메모리 사이즈 limit) 2. Context Switching - Context Switching : CPU에 실행할 프로세스를 교체하는 기술 1 ) 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트해서 메인 메모리에 저장 2 ) 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB정보를 CPU에 넣고.. 2021. 8. 1.
07. 프로세스 구조 1. 프로세스의 구조를 python, C 의 예로 살펴보자. : 프로세스는 STACK, HEAP, DATA, CODE 네 가지 영역으로 구성된다. 우리가 프로그램에서 작성하는 코드는 PROCESS의 CODE영역에 binary 형식으로 mapping된다. DATA 영역에는 선언한 변수가 정적으로 mapping 되고, Stack에는 실행 순서대로 변수,값을 저장했다가 사용이 끝나면 삭제된다. 2. 프로세스의 구성 1 ) text (code) : 코드 2 ) data : 변수 / 초기화된 데이터 - BSS : 초기값이 없는 전역변수 ( int data; ) - DATA : 초기값이 있는 전역변수 ( int data=1; ) 3 ) stack : 임시 데이터(함수 호출, 로컬 변수) 4 ) heap : 코드에서.. 2021. 7. 31.
06. 인터럽트 1. 인터럽트란 ? CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요할 경우에 CPU에 알려서 처리하는 기술 1 ) Timer Interrupt : 선점형 스케쥴러를 따를 때, 프로세스 running 중에 스케쥴러가 이를 중단시키고, 다른 프로세스로 교체하기 위해 현재 프로세스 실행을 중단시킨다. 그러기 위해서는 스케쥴러 코드가 실행이 되어서 현 프로세스 실행을 중지시켜야 한다. 2 ) IO Device와의 커뮤니케이션 중 저장 매체에서 데이터 처리 완료시, 프로세스를 깨워야한다. ( block state -> ready state ) 3 ) 1 / 0 을 계산할 때 예외상황을 프로세스 등에 알려주어야함 #include int main() { print(.. 2021. 7. 31.
05. 프로세스 상태와 스케쥴러 예시를 먼저 살펴보자 1. 선점형과 비선점형 스케쥴러 1 ) 선점형 스케쥴러 ( Preemptive Scheduling ) : 하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할 수 있음 2 ) 비선점형 스케쥴러 ( Non-preemptive Scheduling ) : 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음 선점형 VS 비선점형 Process 상태, 정적 우선순위, 선점형 스케쥴러, 시분할 시스템이 적용되었을 때 다음과 같이 동작한다. 2021. 7. 26.
04. 스케줄링 알고리즘 스케줄링 알고리즘은 프로세스를 어떻게 실행시킬지 결정하는 방법이다. 시분할 시스템은 프로세스 응답 시간을 짧게, 멀티 프로그래밍은 CPU 활용도를 최대로 높혀서 프로세스를 빨리 실행하는 것이 목표이다. 각 알고리즘은 이와 같은 목표를 갖고 있다. 1. FIFO 스케쥴러 : 프로세스가 저장매체를 읽거나 프린팅을 할 때 쭉 CPU를 끝까지 사용한다. 가장 간단한 스케쥴러로 FCFS라고도 불린다. 다음과 같은 우선순위를 갖는 process가 있을 때 스케쥴링 알고리즘에 따라 작업 실행 순서는 다르다. 2. SJF 최단 작업 우선 스케쥴러 : 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행을 시키는 알고리즘이다. 3. 우선순위 기반 스케쥴러 - 정적 우선순위 : 프로세스마다 우선순위를 미리 지정 - 동적 .. 2021. 7. 19.
728x90
반응형