728x90
반응형

컴퓨터(Computer Science) 205

Memory Management, 메모리 관리 기본 개념 [운영체제]

메모리에 대해서 알아볼 것이다. CPU는 PC(프로그램 카운터)가 지시하는 대로 메모리로부터 다음 수행할 명령어를 가져온다. 그 명령어는 추가적인 데이터가 필요하거나, 데이터를 메모리로 내보낼 수 있다. 명령어 실행은 메모리로부터 명령어를 가져오고, 해독하고 메모리에서 피연산자를 가져오고 그래서 실행한 후, 결과를 메모리에 저장한다. 메인 메모리와 각 처리 코어에 내장된 레지스터들은 CPU가 직접 접근할 수 있는 유일한 저장장치이다. Instruction들은 메모리 주소만을 인수로 취하고, 디스크의 주소를 인수로 취하지 않는다. ** Disk에 있다면 CPU가 쓸 수 없다는 말이다. ++일반적으로 CPU 코어에 내장된 레지스터들은 일반적으로 CPU clock의 cycle에 맞춰서 접근한다. 메모리 버스를..

동기화, 세마포 : Synchronization, Semaphores [운영체제]

많은 쇼프트웨어적 동기화 도구들이 있지만 우선 Semaphores, 세마포를 알아보자 이 글은 프로세스와 동기화, 임계구역에 대한 이해를 바탕으로 쓰는 글이다. [CS Interview] - Process, 프로세스란? [컴퓨터(Computer Science)/운영체제(Operation System)] - Critical Section, 임계구역이란? [운영체제] [컴퓨터(Computer Science)/운영체제(Operation System)] - 프로세스에서의 동기화 (Process Synchronization) [운영체제] **추가예시 [컴퓨터(Computer Science)/시스템 프로그래밍(System Programming)] - 세마포어,Semaphores 그 쓰임과 예시 Semaphores,..

CPU 스케줄링 알고리즘, Scheduling Algorithms [운영체제]

여러가지 알고리즘이 있는데? 몇 개만 맛만 보자 CPU 스케줄링은 준비 큐에 있는 어느 프로세스에 CPU 코어를 할당할 것인지를 결정하는 문제를 다룬다. 여러 가지 다른 CPU스케줄링 알고리즘들이 있다. 1. 선입 선처리 스케줄링 (First Come First-Served Scheduling) 2. 최단 작업 우선 스케줄링(Shortest-Job-First Scheduling) 3. 라운드 로빈 스케줄링(Round-Robin Scheduling) 4. 우선순위 스케줄링(Priority Scheduling) 5. 다단계 큐 스케줄링(Multilevel Queue Scheduling 6. 다단계 피드백 큐 스케줄링(Multilevel Feedback Queue Scheduling) 몇개만 보자 **알고 들..

CPU Scheduling criteria, 스케줄링 기준 [운영체제]

당연히 아무거나 스케줄링을 하진 않는다. 아무거나하면 효율적으로 나올리가 있나?? 당연히 없다. 스케줄링 알고리즘이 여러가지가 있는데 걔네들은 뭘 기준으로 짠걸까?? 기준 알아보자 우선 우리가 배운 것들을 알아보면? 5가지가 있다. • CPU utilization – keep the CPU as busy as possible • Throughput – # of processes that complete their execution per time unit • Turnaround time – amount of time to execute a particular process • Waiting time – amount of time a process has been waiting in the ready qu..

CPU Scheduling 스케줄링, 기본 개념 [운영체제]

CPU 스케줄링은 다중 프로그램 운영체제의 기본이 된다. 정말 중요하고, 앞으로도 중요하고 언제나 중요할 것이다. 가보자 프로세스를 전 글에서 소개한 적이 있는데 운영체제는 실질적으로는 프로세스가 아니라 커널 수준의 스레드를 스케줄하는 것이다. 프로세스 스케줄링과 스레드 스케줄링은 구분이 거의 무의미하게 되었다. 그렇지만 배울 때는 따로 언급할 것이니 참고하고 가자 진짜 기본부터 가자 코어가 하나인 시스템에서는 한 순간에 하나의 프로세스만 실행가능하다고 했다. 나머지 프로세스는 대기한다고 말했다. 그런데 우리는 다중 프로그래밍을 활용해 CPU의 이용률을 높이려고 시도한다고 했다. 다시 말하자면 CPU의 사용을 항상 바쁘게 하는 개념은 시스템의 모든 처리 코어로 확장된다. **스케줄링은 운영체제의 기본적인..

컴퓨터 구조에서 본 가상메모리, Virtual memory - 기본 개념 [컴퓨터구조]

가상 메모리는 참 많이 들었을 것이다. 왜 RAM이 가상메모리지?? 왜 사람들이 그렇게 말하는 거지?? 운영체제에서 배운 가상메모리랑 같은 개념인가? 뭐지?? 이제부터알아보자 우리가 알고 있는 Main memory, 즉, DRAM을 캐시로써 사용한다는 개념이다. 즉, 다시 말해서 메인 메모리가 Secondary 메모리의 캐시 역할을 한다는 뜻이다. 특징을 보면 프로그램들은 메인 메모리를 공유한다. 메인 메모리를 사용할 때, (MMU, memory management unit 이 이용) 각각의 프로그램들은 자신만의 virtual address space 를 갖게 된다. 해당 space에 프로그램에 대한 code, data가 담겨있는 것이다. 또한 다른 프로그램의 접근을 제한한다. 이러한 가상 메모리는 실제..

Cache Performance, 캐시의 성능 [컴퓨터구조]

우리는 앞서 CPU, 프로세서의 성능을 측정했다. 즉, 프로세서에서 캐시가 영향을 미치는 정도가 캐시의 성능이 될 것이라고 간접적으로 알 수 있다. CPU time에 영향을 미치는 요소가 있다. 실제로 프로그램을 CPU가 실행하는 시간과 Data에 접근하는 시간 2가지로 나눌 수 있다. 캐시에서는 Data에 접근하는 시간이 중요하게 여겨진다. 아래의 조건 하에 우리는 CPU 성능을 다르게 표현할 수 있다. 위의 식을 이용하여 실제로 예를 들어서 구해보자 Miss panaty가 100 cycle이다. -> Main memory에서 가져오는 데 필요한 사이클 Base CPI (모두 다 cache hit만 할 경우의 CPI를 말한다.) Load/Store -> 메모리에 접근하는 instruction이 36% ..

메모리 계층구조, Memory Hierarchy 에 대한 보충내용[컴퓨터구조]

메모리 계층구조를 하는 이유 캐싱을 위함. 캐싱 안할거면 계층적 구조를 가질 필요도 없음 즉, 모든 계층에서 Block placement Finding a block Replacement on a miss Write policy 를 정해줘야함. 우리는 답을 이미 배워왔다. Block placement 에 대해 다시 복습해보자 Associativity에 따라 성능이 결정되는 것을 이전 시간에 알아봤다. 하지만 그것도 마냥 높다고 좋은 것이 아니었다. Miss rate를 줄여줬지만 hit time을 늘리는 결과를 가져오기도 했다. 또한 Comparator를 이용한다면 비용도 올라가기도 했다. Find a block은 어떨까?? Direct는 entry에 하나 밖에 들어있지 않기 때문에 index로 바로 구할..

프로세스 간 통신, Interprocess Commnunication/IPC

통신이란게 별 거 없다. 그냥 뭔가 주고 받는 것을 통신이라고 한다. 프로세스끼리 뭔가 주고 받는 갑다 하고 보자 • Processes within a system may be independent or cooperating • Independent process cannot affect or be affected by the execution of another process • Cooperating process can affect or be affected by the execution of another process • Cooperating process can affect or be affected by other processes, including sharing data • Reasons ..

스레드 라이브러리?? Thread library

라이브러리 도서관 아니고 아 근데 라이브러리 도서관처럼 책이 모여있다고 하면 뭐 비슷할 수도 있겠다. 스레드 라이브러리라는 것은 프로그래머에게 스레드를 생성하고 관리하기 위한 API를 제공하는 것이다. 첫 번째 방법은 커널의 지원 없이 완전히 사용자 공간에서만 라이브러리를 제공하는 것이다. 라이브러리를 위한 모든 코드와 자료구조는 사용자 공간에 존재한다. 그렇게 되면 라이브러리의 함수를 호출하는 것은 시스템 콜이 아니라 사용자 공간의 지역 함수를 호출하게 된다는 것이다. 두 번째 방법은 운영체제에 의해 지원되는 커널 수준의 라이브러리를 구현하는 것이다. 이 경우에는 라이브러리를 위한 코드와 자료구조는 커널 공간에 존재한다. 그렇게 되면 라이브러리 API를 호출하는 것은 커널 시스템 콜을 하는 것과 같아진..

728x90
반응형