※ 개요 초기에는 메모리 하나에 현재 프로그램의 코드와 데이터만 존재하였다. 시간이 흐른 후 멀티프로그래밍 시대가 오면서 메모리에 변화가 생겼다. (여러 프로세스를 가진 공유 메모리 개념) 즉, 여러 프로세스가 실행 준비 상태에 있고 운영체제는 그들을 전환하면서 실행함으로써 CPU 이용률을 증가시켰다. 시분할을 하려면 현재 프로세스를 중단하고, 중단 시점의 모든 상태를 디스크 종류의 장치(물리 메모리)에 저장하고 다른 프로세스의 상태를 탑재하여야 한다. 이때 레지스터 상태를 저장하고 복원하는 것은 빠르지만 메모리의 내용 전체를 디스크에 저장하는 것은 엄청나게 느리다. 따라서 프로세스 전환 시 프로세스를 메모리에 그대로 유지하면서, 운영체제가 시분할 시스템을 효율적으로 구현할 수 있게 해야 한다. 시분할 ..
※ 개요 다중 CPU 시대가 오면서 많은 문제가 발생하였다. 가장 중요한 것은 전통적 응용프로그램은 오직 하나의 CPU만 사용한다는 것이다. 더 많은 CPU를 추가해도 더 빨리 실행되지 않는다. 이 문제를 해결하려면 응용 프로그램을 병렬(parallel)로 실행되도록 다시 작성해야 한다. 보통 쓰레드를 이용한다. - 멀티 쓰레드 응용 프로그램은 작업을 여러 CPU에 할당하며, 따라서 더 많은 수의 CPU가 주어지면 더 빠르게 실행된다. - 응용 프로그램뿐 아니라 운영체제가 새로 직면한 문제는 멀티프로세서 스케줄링이다. - 지금까지 단일프로세서 스케줄링의 많은 원칙들을 여러 CPU에서 동작하도록 어떻게 확장할 수 있을까? ※ 단일 CPU 하드웨어 vs 멀티 CPU 하드웨어 [단일 CPU 시스템] - 하드웨..
◈ 비례 배분 스케줄러 : 반환시간이나 응답시간을 최적화하는 대신 스케줄러가 각 작업에게 CPU의 일정 비율을 보장한다. ex) 추첨 스케줄링 (lottery scheduling) : 다음 실행될 프로세스를 추첨을 통해 결정한다. 더 자주 수행되어야 할 프로세스는 추첨권(티켓)을 많이 준다. ◈ 추첨권 스케줄링 [장점] ▶ 무작위성이다. 1. 무작위 방식은 관리해야 할 상태 정보가 거의 없다. (프로세스의 상태 정보만 필요하다. 예. 각 프로세스가 가진 추첨권의 개수) 그에 반해 전통적인 공정 배분 스케줄링 알고리즘에서는 각 프로세스가 사용한 CPU 양을 기록해야 한다. 이 정보는 각 프로세스를 실행시킬 때마다 갱신된다. 2. 무작위 방식은 매우 빠르다. 난수 발생 시간이 빠르기만 하면 결정 역시 빠르게..
1. 프로세스 개념 : 일반적으로 프로세스는 실행 중인 프로그램으로 정의한다. 프로그램은 디스크 상에 존재하며 실행을 위한 명령어와 정적 데이터의 묶음이다. 이 명령어와 데이터 묶음을 읽고 실행하여 프로그램에 생명을 불어넣는 것이 운영체제이다. 여기서 질문!! 위에서 말하는 정적 데이터란 "이미 만들어진 데이터"를 의미한다. 반면에 동적 데이터는 요청이 발생할 때 새로 생성되서 전달되는 데이터이다. 정적데이터는 static 키워드를 통해 지역변수의 소멸시기를 '프로그램 종료 시'로 바꿀 수 있기 때문에 static 변수를 지역변수와 전역변수의 영역으로 끌고 오는 것은 다소 오해의 소지가 있다. 사용자는 하나 이상의 프로그램을 동시에 실행시키기를 원한다. 여러 프로그램을 동시에 실행할 수 있으면, 시스템을..
운영체제는 시스템을 사용하기 쉽게 하기 위해(easy to use) 프로그램 실행 시 다양한 일들을 발생시킨다. cf> 프로그램 실행 == ( 반입(fetch) -> 해석(decode) -> 실행(execute) ) 즉 운영체제는 여러 개의 프로그램을 동시에 실행시키거나, 프로그램 간의 메모리 공유를 가능하게 하고, 장치와 상호작용을 가능케 하고, 다양한 흥미로운 일을 할 수 있게한다. ▶ Operationg System(운영체제)란 시스템을 사용하기 편리하면서 정확하고 올바르게 동작시키는 소프트웨어이다. 운영체제는 프로세서, 메모리, 또는 디스크와 같은 물리적인 자원을 이용하여 일반적이고, 강력하고, 사용이 편리한 가상 형태의 자원을 생성한다. 때문에 운영체제를 때로는 가상머신 (virtual mach..
- Total
- Today
- Yesterday
- @functools.lru_cache
- ES6
- 백준
- method와 function
- sequelize.fn
- Git
- jre
- 객체지향개념
- dynamic-project
- 정적멤버
- 자바빌드도구
- nunjucks
- 사용자정의예외클래스
- 클래스와객체
- 메이븐 저장소
- yarn start
- 익명자식객체
- jdk
- 인스턴스멤버
- 자바스크립트Call-back
- 백준2206 파이썬 풀이
- 생성자필드메소드
- es6모듈
- 자바스레드
- @functools.singledispatch
- os
- java
- @functools.wraps
- nodejs
- 자바스크립트Promise
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |