목록분류 전체보기 (270)
빙응의 공부 블로그

3~4장까지 저수준 기법에 대해서 이해하였다. 이것을 제대로 이해하지 않는다면 정책을 이해할 수 없다.운영체제의 스케줄러의 고수준 정책에 관해서는 이해가 필요하다. 이제부터는 다양한 스케줄링 정책을 소개할 것이다.이러한 정책은 원칙이라고도 불리며 오랫동안 개발된 정책이다. 스케줄링 정책은 어떻게 개발하는가? 📝10.1 워크로드에 대한 가정가장 먼저 프로세스에 대하여 몇 가지 가정 할 것이다. 일련의 프로세스들이 실행하는 상황을 워크로드라고 부르기로하자워크로드를 결정하는 것은 정책 개발에서 매우 중요한 부분이다. 워크로드에 관해 더 잘 알수록 그에 맞게 정책을 정교하게 할 수 있다. 우리가 지금 설명에서 사용할 워크로드에 대한 가정은 비현실적이다. 하지만 논의하는데 문제는 없다.논의가 진행됨에 따라 워..

CPU를 가상화하기 위해서 운영체제는 여러 작업들이 동시에 실행되는 것처럼 보이도록 물리적 CPU를 공유합니다.기본적인 아이디어는 간단합니다. 한 프로세스를 잠시동안 실행하고 다른 프로세스를 또 잠깐 실행하는 것입니다.이러한 방식처럼 CPU 시간을 나누어 씀으로써 가상화를 구현할 수 있습니다. 그러나 가상화 기법을 구현하기 위해서는 몇가지 문제를 해결해야합니다. 첫 번째는 성능 저하입니다. 시스템에 과중한 오버헤드를 주지 않으면서 가상화를 구현해야합니다. 두 번째는 제어 문제입니다. CPU에 대한 통제를 유지하면서 프로세스를 효율적으로 실행시켜야 야합니다. 핵심 질문운영체제는 효율적인 방식으로 CPU를 가상화하지만 시스템에 대한 제어를 잃지 않는다. 제어를 잃지 않기 위해 하드웨어와 운영체제의 지원이 ..

막간이번 절에서는 운영체제 API와 그의 사용법을 포함하여 시스템의 실제적인 측면을 다룹니다. 이번 절에서는 유닉스 시스템의 프로세스 생성의 관해 논의합니다. 유닉스 기반 운영체제는 프로세스 생성을 위해 fork()와 exec() 시스템 콜을 사용합니다. wait()은 프로세스가 자신이 생성한 프로세스가 종료되기를 기다리기 원할 때 사용합니다. 핵심 질문프로세스를 생성하고 제어하려면 운영체제가 어떤 인터페이스를 제공해야 하는가?유용하고 편하게 사용하기 위해서 이 인터페이스를 어떻게 설계되어야 하는가? 📝8.1 fork() 시스템 콜프로세스 생성에 fork() 시스템 콜이 사용됩니다. ##include #include #include intmain(int argc, char *argv[]){ pri..

이 장에서는 운영체제가 제공하는 핵심 개념 중 하나인 프로세스(process)에 대해 논의합니다. 운영체제란?일반적으로 프로세스는 실행 중인 프로그램으로 정의합니다. 프로그램 자체는 생명이 없는 존재이며 프로그램은 디스크 상에 존재하는 실행을 위한 명령어와 정적 데이터의 묶음입니다.이 명령어와 데이터 묶음을 읽고 실행하여 프로그램에 생명을 불어넣는 것이 바로 운영체제입니다. 사용자는 하나 이상의 프로그램을 동시에 실행하기 원합니다. 우리가 컴퓨터를 사용할때 컴퓨터들이 동시에 수십 혹은 수백 개의 프로세스를 실행하는 것처럼 보입니다. 사용자는 사용 가능한 CPU를 신성쓰지 앟고 그저 프로그램만을 실행한다.이때 우리의 도전과제는 다음과 같습니다. 적은 CPU로 여러 개가 존재한다는 환상을 어떻게 제공하는..

📝배경파티 프로젝트 UniP 진행 중에 파티에 대한 인원 수를 갱신하는 과정에서 동시성 문제가 발생했습니다. 📌문제 설명여러 사용자가 동시에 파티에 가입을 하여 파티 인원을 갱신 과정에서 트랜잭션 교착 상태(DeadLock)가 발생했습니다.교착 상태가 발생하여 한 명의 사용자를 제외한 나머지 사용자가 파티에 가입이 안된 것을 발견했습니다.Failed to join party: could not execute statement [Deadlock found when trying to get lock; try restarting transaction] 그래서 다시 간단하게 테스트를 진행했습니다. @Test void testConcurrencyOnJoinParty() throws In..

MySQL에 대해 심층적으로 공부하였으니 한번 적용해봅시다. 📝 배경졸업 작품 프로젝트 개발을 진행한 후, 깊이 있는 MySQL 공부를 위해 《Real MySQL 8.0》을 읽었습니다. 이번 글에서는 배운 내용을 실제 프로젝트에 적용해 보고자 합니다.우리 서비스의 핵심 기능 중 하나는 파티 목록을 무한 페이징(커서 페이징) 방식으로 가져오기입니다. 성능 저하 없이 지속적으로 데이터를 조회하려면, 인덱스 설계가 매우 중요합니다. [UniP]무한 페이징 기능 구현 및 성능 개선하기 [UniP]무한 페이징 기능 구현 및 성능 개선하기이 글은 무한 페이징에 대해 다루겠습니다.📝배경 이번 졸업 작품 프로젝트에서 메인서버를 맡아 개발하게 되었습니다.그 중 핵심 기능은 파티를 무한 페이지으로 가져오는 요구사항이..