CS

· CS/Server
개요매일 11시 30분에 질문이 날아오는 썸원 애플리케이션에 관해서 이야기해보려고 한다.사용한 지는 거의 1년 가까이 되었고, 해당 기간 동안 재미있는 많은 질문들과 함께 아래의 궁금증을 생각해보곤 했다. 1. 질문은 순서가 정해진대로 받게 되는 걸까?2. 썸원 타임과 알림 전송에 관하여3. 썸원 타임 시간에 정확히 알림이 도착하는가? 질문은 순서가 정해진대로 받게 되는 걸까?1년간의 데이터가 존재하다 보니 생각보다 빠르게 해결되었다.왼쪽 질문들은 2020년에 작성된 포스팅에서 가져온 질문들이고, 오른쪽 질문들은 1년 전인 2023년도에 작성했던 질문들이다.양쪽의 07, 08, 16, 18번 질문을 보면 동일한 질문이라는 것을 알 수 있다. 그리고 05, 14, 17번 질문을 보면 유사한 질문이라는 것 ..
개요 DB 공부를 하면서 실제 서비스는 "SSD로 구성이 될까 아니면 HDD로 구성이 될까"라는 의구심으로부터 시작하여 SSD의 구조 및 동작원리를 공부하고 작성하게 된 포스팅이다. HDD, SSD 둘 다 데이터를 저장하는 저장장치이며, 흔히 우리는 SSD가 HDD보다 훨씬 더 빠르다고 알고 있다. 그 이유는 무엇일까? 우선 HDD와 SSD에 대하여 간략하게 알아보자. HDD (Hard Disk) 디스크는 플래터(platter)라는 자기 디스크를 물리적으로 회전시켜 데이터를 처리한다. 그리고 데이터를 처리하는 과정에서 헤더가 움직이면서 디스크의 일을 수행한다. 위 과정에서 우리는 디스크의 한계를 알 수 있다. 그것은 물리적으로 회전시키고, 헤더가 움직인다는 점이다. SSD (Solid State Driv..
Operating System Concepts 10th, 5.2장을 요약한 내용입니다. 스케줄링 기준 Scheduling Criteria 서로 다른 CPU 스케줄링 알고리즘들은 다른 특성이 있고, 프로세스와 상황에 맞는 다양한 알고리즘들의 특성을 고려해야 한다. CPU 스케줄링 알고리즘을 비교하기 위한 여러 기준은 다음과 같다. CPU 이용률 utilization 우리는 CPU가 최대한 바쁘게 유지되기를 원하고, 개념상 CPU 이용률은 0 ~ 100%까지 이른다. 실제 시스템에서는 40%(부하가 적은 시스템)에서 90%(부하가 큰 시스템)까지의 범위를 가져야 한다. 처리량 throughput 처리량은 단위 시간당 완료된 프로세스의 개수이다. 처리량이 긴 프로세스의 경우 처리량은 몇 초 동안 한 프로세스가..
Operating System Concepts 10th, 5.1장을 요약한 내용입니다. CPU 스케줄링 개념에 들어가기 앞서, 다중 프로그래밍의 목적을 알아보자 다중 프로그래밍은 CPU 이용률을 최대화하기 위해 항상 실행 중인 프로그램을 가지는 데에 목적이 있다. 이 목적을 달성하기 위해서는 다수의 프로세스를 메모리 내에 유지한다. 어떤 프로세스가 대기해야 할 경우, 운영체제는 CPU를 회수하여 다른 프로세스에게 할당한다. 이러한 종류의 스케줄링은 운영체제의 기본적인 기능이고, 대부분의 컴퓨터 자원들은 사용되기 전에 스케줄 된다. CPU는 컴퓨터의 중요한 자원이기 때문에 CPU의 스케줄링은 운영체제의 핵심이다. CPU - I/O 버스트 사이클 CPU - I/O Burst Cycle CPU 실행과 I/O ..
Operating System Concepts 10th, 4.6장을 요약한 내용입니다. Fork() 및 Exec() 시스템 콜 The fork() and exec() System Calls 다중 스레드 프로그램에서는 fork()와 exec()의 의미가 달라질 수 있다. 만일 한 프로그램의 스레드가 fork()를 호출하면 아래와 같은 고려가 필요하다. 새로운 프로세스는 모든 스레드를 복제해야 하는가 - 모든 스레드를 복사하는 것 한 개의 스레드만 가지는 프로세스여야 하는가 - fork()를 호출한 스레드만 복제하는 것 어떤 스레드가 exec() 시스템 콜을 부르면 exec()의 매개변수로 지정된 프로그램이 모든 스레드를 포함한 전체 프로세스를 대체시킨다. 두 버전의 fork() 중 어느 쪽을 택할 것인지는..
Operating System Concepts 10th, 4.5장을 요약한 내용입니다. 다중 코어 처리의 지속적 성장에 따라 수천 개의 스레드를 가진 응용 프로그램이 등장하게 되면서 병행 및 병렬 응용 프로그램의 설계를 도와주는 한 가지 방법은 스레딩의 생성과 관리 책임을 개발자로부터 컴파일러와 실행시간 라이브러리에게 넘겨주는 것이다. 이러한 방법을 암묵적 스레딩이라고 한다. 암묵적 스레딩은 일반적으로 응용 프로그램 개발자가 병렬로 실행할 수 있는 스레드가 아닌 작업을 식별해야 한다. 작업은 일반적으로 함수로 작성되며, 런타임 라이브러리는 일반적으로 다대다 모델을 사용하여 별도의 스레드에 매핑된다. 개발자는 병렬 작업만 식별하면 되고 라이브러리는 스레드 생성 및 관리에 대한 특정 세부 사항을 결정한다는 ..
Operating System Concepts 10th, 4.4장을 요약한 내용입니다. 스레드 라이브러리(threads library)는 프로그래머에게 스레드를 생성하고 관리하기 위한 API를 제공한다. 스레드 라이브러리를 구현하는 데에는 주된 두 가지 방법이 있다. 커널의 자원 없이 완전히 사용자 공간에서만 라이브러리를 제공하는 것 라이브러리를 위한 모든 코드와 자료구조는 사용자 공간에 존재한다. 라이브러리의 함수를 호출하는 것은 시스템 콜이 아니라 사용자 공간의 지역 함수를 호출하게 되는 것을 의미한다. 운영체제에 의해 지원되는 커널 수준 라이브러리를 구현하는 것 라이브러리를 위한 코드와 자료구조는 커널 공간에 존재한다. 라이브러리 API를 호출하는 것은 커널 시스템 콜을 부르는 결과를 낳는다. 현재..
Operating System Concepts 10th, 4.3장을 요약한 내용입니다. 1. 사용자 스레드 & 커널 스레드 User Threads & Kernel Threads 스레드를 위한 지원은 사용자 스레드(user threads)를 위해서는 사용자 수준에서, 커널 스레드(kernel threads)를 위해서는 커널 수준에서 제공된다. 사용자 스레드는 커널 위에서 지원되며 커널의 지원 없이 관리된다. 커널 스레드는 운영체제에 의해 직접 지원되고 관리된다. Windows, Linux, macOS를 포함한 거의 모든 현대 운영체제들은 커널 스레드를 지원한다. 사용자 스레드와 커널 스레드는 어떤 연관 관계가 존재해야 한다. 이 연관 관계를 확립하는 일반적인 세 가지 방법은 다대일, 일대일, 다대다 모델이..
Operating System Concepts 10th, 4.2장을 요약한 내용입니다. 컴퓨터 설계의 역사는 좋은 컴퓨터 성능에 대한 요구에 부응하며, 단일 CPU 시스템에서 다중 CPU 시스템으로 발전했다. 이후 시스템 설계 추세는 단일 컴퓨팅 칩에 여러 컴퓨팅 코어를 배치하는 것이다. 이러한 시스템을 다중 코어라고 하며 다중 스레드 프로그래밍은 이러한 여러 컴퓨팅 코어를 보다 효율적으로 사용하고 병행성을 향상하는 기법을 제공한다. 단일 코어와 다중 코어의 차이점 단일 코어 단일 컴퓨팅 코어가 있는 시스템에서는 단지 처리 코어가 한 번에 하나의 스레드만 실행할 수 있기 때문에 병행성은 시간이 지남에 따라 스레드 실행이 인터리브된다. (인터리브 interleave: 어떤 프로그램의 일부분을 다른 프로그램..
Operating System Concepts 10th, 4.1장을 요약한 내용입니다. 스레드는 CPU 이용의 기본 단위이다. 스레드는 스레드 ID, 프로그램 카운터(PC), 레지스터 집합 그리고 스택으로 구성된다. 스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 그리고 열린 파일이나 신호와 같은 운영체제 자원들을 공유한다. 프로세스가 다수의 제어 스레드를 가진다면, 프로세스는 동시에 하나 이상의 작업을 수행할 수 있다. 이에 단일 스레드 프로세스와 다중 프로세스가 존재한다. 1. 동기 Motivation 현대의 컴퓨터와 모바일 기기에서 작동하는 거의 모든 소프트웨어 응용 프로그램들은 다중 스레드를 이용한다. 하나의 응용 프로그램은 몇 개의 실행 흐름을 가진 독립적인 프로세스로 구현된다..
기중
'CS' 카테고리의 글 목록