반응형 전체 글553 운영체제 - CPU스케줄링 알고리즘(선입 선처리, 최단 작업 우선, 라운드 로빈, 최소 잔여 시간 우선, 우선순위, 다단계 큐, 다단계 피드백 큐) 1. 선입 선처리 스케줄링(FCFS, First Come First Served) 단순히 준비 큐에 삽입된 순서대로 처리하는 비선점 스케줄링 방식이다. 즉 먼저 CPU를 요청한 프로세스부터 CPU를 할당한다. 호위 효과(Convoy Effect) CPU 버스트 시간이 긴 프로세스가 준비 큐 앞에 위치하게 되면 그 뒤에 있는 짧은 CPU버스트를 가지는 프로세스들도 해당 프로세스의 끝을 기다려야 하는 현상이다. 2. 최단 작업 우선 스케줄링(SJF, Shortest Job First) 호위 효과를 방지하려면 CPU 사용이 긴 프로세스는 나중에 실행하고 CPU 사용시간이 짧은 프로세스는 먼저 실행하도록 한다. 최단 작업 우선 스케줄링은 기본적으로 비선점형 스케줄링 알고리즘으로 분류되지만 선점형으로 구현될 수도.. 2024. 1. 21. 운영체제 - CPU 스케줄링(우선순위, 스케줄링 큐, 선점 및 비선점형 스케줄링) CPU 스케줄링이란? 운영체제가 프로세스들에게 공정하고 합리적으로 CPU자원을 배분하는 것이다. 가장 공정한 CPU 스케줄링은 무엇일까? CPU를 사용하고 싶ㅇ하는 프로세스들에게 차례로 돌아가면 CPU를 이용하게 하는 방법이 있다. 즉 먼저 말한 프로세스 순서대로 CPU를 이용하게 하는 방법이다. 하지만 이는 좋은 방법이 아니다. 프로세스마다 우선순위가 다르기 때문이다. 예를 들어 입출력 작업이 많은 프로세스(=입출력 집중 프로세스)의 우선순위는 CPU작업이 많은 프로세스(=CPU 집중 프로세스)보다 우선순위가 높다. CPU 버스트(CPU burst)는 CPU를 이용하는 작업 입출력 버스트(I/O burst)는 입출력을 기다리는 작업이라 부른다. 즉 프로세스는 일반적으로 CPU버스트와 입출력 버스트를 반.. 2024. 1. 21. Effective C# - Item 28 확장 메서드를 이용하여 구체화된 제네릭 타입을 개선하라 기존에 사용중인 컬렉션 타입에 영향을 주지 않으면서 새로운 기능을 추가하고 싶다면 구체화된 컬렉션 타입에 대해 확장 메서드를 작성하면 된다. public class Customer { public string Name { get; set; } } 확장 메서드를 사용하지 않는 경우 public class CustormerList : List { public void SendEmailCoupons(Coupon speicalOffer); public static IEnumerable LostProspects(); } 확장 메서드는 IEnumerable를 기반으로 작성됐지만 파생 클래스에서 메서드를 추가하는 방식은 List를 기반으로 한다. List는 IEnumerable를 상속받고 있기 때문에 LINQ와 같은.. 2024. 1. 20. C# - Windows Forms 프로젝트 사용해보기 1. 새 프로젝트 만들기 - windows form 검색 2. Form 확인 3. 보기 - 도구상자 - 필요한 도구 선택 4. 버튼을 넣어보자 01 도구상자에서 버튼 클릭 그리고 우측버튼을 누르면 코드보기 클릭 02 button1_Click메서드 버튼이 눌러졌을때 실행되는 메서드이다. 여기에 버튼이 클릭되었을때 실행하고 싶은 코들르 작성하면 된다. private void button1_Click(object sender, EventArgs e) { } 2024. 1. 20. C# 문법 - 확장 메서드(Extension Method) class MyInt { public static bool IsEven(int a) { return a % 2 == 0; } } class Program { public static void Main() { int a = 124; bool b = Program2.IsEven(a); } } 만약 IsEvent메서드가 int구조체에 소속된 메서드라면 아래와 같이 더 직관적으로 사용할 수 있을 것이다. class Program { public static void Main() { int a = 124; bool b = a.IsEven(); } } int구조체가 어떻게 어떻게 정의되어있는지 한 번 확인해보자 이 구조체에 IsEven메서드를 추가하고 싶다. 새로운 메서드를 추가하는 가장 쉬운 방법은 구조체안에 그.. 2024. 1. 19. Effective C# - Item 27 인터페이스는 간략히 정의하고 기능의 확장은 확장메서드를 사용하라 확장 메서드를 이용하면 인터페이스에 새로운 동작을 추가할 수 있다. 인터페이스에는 가능한 최소한의 기능만을 정의하고 확장 메서드를 세트로 함께 구현하면 손쉽게 기능을 확장할 수 있다. 특히 API를 추가적으로 정의하지 않고도 새로운 기능을 추가할 수 있다. 확장메서드(Extention Method) 정적 클래스에 속해 있는 정적 메서드로 해당 클래스의 인스턴스가 마치 자신의 멤버인 것처럼 사용할 수 있다. C#에서는 확장 메서드를 정의할 때 정적 클래스에 정적메서드로 작성하고 첫번째 매개변수에 this키워드를 사용하여 어떤 형식에 대한 확장 메서드인지 나타낸다. ex) System.Linq.Enumerable클래스에는 IEnumerable에대해 정의된 50개 이상의 확장메서드(Where,Orderby,T.. 2024. 1. 19. 이전 1 ··· 21 22 23 24 25 26 27 ··· 93 다음 반응형