멀티코어 CPU란
2022. 6. 30. 00:10
개발자: 지식 정리/CS 지식: 컴퓨터 구조와 운영체제
멀티 코어 CPU의 등장 등장 배경 2000년대 초반, 한계치 이상까지 CPU의 클럭을 끌어올리던 CPU 제조회사들은 2002년에 3GHz 클럭을 돌파하였다. 그것까지는 좋았다. 문제는 거기서 발생하는 발열, 엄청난 전력소모. 클럭을 올리고 코어의 면적을 넓히는 방식으로 성능향상을 꾀하는 것은 점점 한계를 드러내고 있었다. CPU의 성능이 매년마다 기하급수적으로 증가한다고 해도 코어 하나가 처리할 수 있는 작업 속도는 분명히 한계가 있기 때문이다. 멀티코어 CPU의 등장 기존 싱글 코어에서는 한 번에 하나의 명령어만 실행할 수 있었다. (fetch-decode-execute 사이클. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=..
동기화 문제
2021. 11. 10. 13:18
개발자: 지식 정리/CS 지식: 컴퓨터 구조와 운영체제
동기화 문제 한정적인 시스템 자원에 여러 스레드가 동시에 접근해서 사용하면 문제가 발생할 수 있다. 이 문제를 방지하기 위한 기법 스레드 동기화 - 실행 순서의 동기화 - 스레드의 실행 순서를 정의하고, 이 순서를 반드시 따르도록 하는 것. - 메모리 접근에 대한 동기화 - 메모리 접근에 있어서 동시 접근을 막는 것동기화 기법 - 유저 모드의 동기화 - 커널의 힘을 빌리지 않는 동기화 기법. 커널의 코드가 실행되지 않음 - 성능상 이점이 있으나 기능상의 제한점이 존재. 상당히 빠름. - 임계 구역(critical section) 기반의 동기화, 인터락 함수 기반의 동기화 - critical section 기반의 동기화 (critical section은 동기화 문제의 일으키는 코드블록) - 한번의 하나의 ..
메모리 관리
2021. 11. 10. 13:17
개발자: 지식 정리/CS 지식: 컴퓨터 구조와 운영체제
가상 메모리 사용자들에게 매우 큰 (주) 메모리로 보이게 만드는 것을 말한다. 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식이다. 가상적으로 주어진 주소를 가상 주소(virtual address) 또는 논리 주소(logical address) 라고 하며, 실제 메모리 상에서 유효한 주소를 물리 주소(physical address) 또는 실주소(real address)라고 한다. 가상 주소의 범위를 가상 주소 공간, 물리 주소의 범위를 물리 주소 공간이라고 한다. 가상 주소 공간은 메모리 관리 장치(MMU)에 의해서 물리 주소로 변환된다. 이 덕분에 프로그래머는 가상 주소 공간상에서 프로그램을 짜게 되어 프로그램이나 데이터가 주메모리상에 어떻게 존재하는지를 의식할 필요가 없어진다...
CPU 스케줄링
2021. 11. 10. 13:15
개발자: 지식 정리/CS 지식: 컴퓨터 구조와 운영체제
CPU 스케줄링 CPU는 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행. 이 때 어떤 프로세스를 다음에 처리할 지 선택하는 알고리즘을 CPU 스케줄링 알고리즘이라고 한다. 따라서 상황에 맞게 CPU를 어떤 프로세스에 배정하여 효율적으로 처리하는가가 관건이다. Preemtive(선점) vs Non-Preemptive Preemtive(선점) 하나의 프로세스가 CPU를 차지하고 있을 떄, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식 SRT(Shortest Remaining Time First), 라운드 로빈(Round Robin), 다단계 큐(Multi Level Queue), 다단계 피드백 큐(Multi Level Feedback Queue) Non..
프로세스와 스레드
2021. 11. 10. 11:31
개발자: 지식 정리/CS 지식: 컴퓨터 구조와 운영체제
프로그램 파일 시스템에 존재하는 실행 파일 프로세스 메모리에 적재되어서 실행되고 있는 프로그램. 실행되고 있는 프로그램의 인스턴스. (운영체제가 관리하는 작업의 단위.) 운영체제로부터 시스템 자원을 할당받는다. → Cpu 시간, 운용되기 위한 필요한 주소 공간, Code, Data, Stack, Heap의 구조로 되어있는 독립된 메모리 영역. 프로세스 간에는 메모리 등의 자원을 공유하지 않는다(쓰레드와 가장 큰 차이점) 한 프로세스는 다른 프로세스의 메모리 공간(변수나 자료구조)에 접근할 수 없으며, 접근을 위해선 IPC통신이 필요하다. ex) 파이프, 파일, 공유메모리, 소켓 등을 이용한 통신방법 IPC (Inter Process communication) : 독립된 프로세스끼리 통신을 하기 위한 방법..