본문 바로가기
반응형

65

운영체제 - 프로세스 상태, 프로세스 계층 구조(부모 프로세스, 자식 프로세스), 프로세스 생성 기법(fork,exec) PCB에 기록되는 프로세스 상태 프로세스 상태 01생성 상태(new) 이제 막 메모리에 적재되어 PCB를 할당 받은 상태이다. 생성 상태를 거쳐 실행할 준비가 완료되었다면 곧바로 실행되지 않고 준비 상태가 되어 CPU의 할당을 기다린다. 02 준비 상태(ready) 당장이라도 CPU를 할당 받아 실행할 수 있지만 아직 자신의 차례가 아니기에 기다리고 있는 상태이다. 자신의 차례가 되면 CPU를 할당 받아 실행상태가 된다. 준비 상태인 프로세스가 실행 상태로 전환되는 것을 디스패치(dispatch)라고 한다. 03 실행 상태(running) CPU를 할당받아 실행 중인 상태를 의미한다. 할당된 시간 모두 사용시 (타이머 인터럽트가 발생하면) 다시 준비 상태가 되고 실행 도중 입출력 장치를 사용하면 입출력 .. 2023. 12. 15.
운영체제 - 프로세스 개요, 프로세스 제어 블록, 문맥 교환, 프로세스 사용자 영역 작업 관리자에서 현재 프로세스를 직접 확인할 수 있다. 포그라운드 프로세스(Foreground Process) 사용자가 볼 수 있는 공간에서 실행되는 프로세스이다. 일반적으로 사용자가 실행한 응용프로그램이 해당된다. 사용자는 회면에서 해당 프로세스의 실행 상태를 볼 수 있다. 백그라운드 프로세스(Background Process) 사용자가 볼 수 없는 공간에서 실행되는 프로세스이다. 사용자와 직접 상호작용이 가능한 백그라운드 프로세스와 사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스로 나눠진다. ex) 데몬(Daemon), 서비스(service) 작업 관리자에서 서비스를 확인할 수 있다. 모든 프로세스는 실행을 위해 CPU가 필요하다. But CPU 자원은 한정되어 있다. 즉 모든 프로세스.. 2023. 12. 15.
Effective C# - Item23 타입 매개변수에 대해 메서드 제약 조건을 설정하려면 델리게이트를 활용하라 C#에서 제약 조건은 일정한 범위 내에서 사용 가능하며 기본적으로 클래스의 상속, 인터페이스 구현, 생성자 제약 등의 형태로 제한이 이루어진다. 몇 가지 경우에는 런타임에 제약 조건을 체크할 수 있는 기능이 제공되지 않기 때문에 컴파일 타임에만 확인할 수 있는 제약을 설정하는 것이 어려울 수 있다. 01 베이스 클래스의 타입이나 특정 인터페이스로 제약 조건 예를 들어, 특정 인터페이스를 구현하도록 하는 것은 가능하지만 인터페이스의 메서드 시그니처를 강제하거나 특정한 static 메서드를 반드시 구현하도록 하는 것은 어렵다. 02 class 타입이나 struct 타입으로 형태 제한 클래스 또는 구조체로 제한하는 것은 가능하지만 특정 메서드나 생성자의 존재를 강제하는 것은 기본 제약 조건에 포함되지 않다. .. 2023. 12. 15.
Effective C# - Item 22 공변성과 반공변성을 지원하라 타입의 가변성(Variance)은 특정 타입의 객체를 다른 타입의 객체로 변환할 수 있는 성격을 나타낸다. 이 가변성은 크게 공변성(Convariance)과 반공변성(Contravariance)으로 나눌 수 있다. 공변성 (Convariance) X를 Y로 바꾸어 사용할 수 있는 경우 C를 C로도 바꾸어 사용할 수 있다면 C는 공변이다. string[] str = new string[10]; object[] obj = str; 공변성은 배열과 같은 특정 컬렉션 형식에서 파생 타입을 기본 타입으로 사용하는 것을 허용한다 . 위의 예제처럼 string[]은 object[]의 파생타입이므로 string[]을 object[]로 할당할 수 있다. 반공변성(Contravariance) Y를 X로 바꾸어 사용할 수 .. 2023. 12. 14.
Effective C# - Item 21 타입 매개 변수가 IDisposable을 구현한 경우를 대비하여 제네릭 클래스를 작성하라 제약 조건은 두 가지 역할을 한다. 1. 런타임 오류가 발생할 가능성이 있는 부분을 컴파일 타임 오류로 대체 2. 타입 매개변수로 사용할 수 있는 타입을 명확히 규정하여 사용자에게 도움 제약 조건은 해당 타입이 특정 인터페이스를 구현하는 등의 특성을 지정할 수 있지만 해당 타입이 특정 작업을 수행하도록 강제하지는 않는다. 예를 들어 IDisposable을 구현하는 타입이라면 특별한 추가 작업이 필요하다고 설명했지만 제약 조건 자체는 해당 타입이 IDisposable을 구현하는지 여부만 확인할 뿐 실제로 IDisposable에서 요구하는 작업을 강제하지는 않는디. 제네릭 메서드 내에서 타입 매개 변수로 주어지는 타입을 이용하여 인스턴스를 생성하는 경우 발생 T가 IDisposable을 구현한 타입을 경우 .. 2023. 12. 10.
Effective C# - Item20 IComparable<T>와 IComparer<T>를 이용하여 객체의 선후 관계를 정의하라 객체의 값 비교(정렬 등)정의하는 인터페이스 두 가지 IComparable과 IComparer 1. IComparable 타입의 기본적인 선후 관계 정의 CompareTo(Object) public int CompareTo (object? obj); 매개변수 obj : 비교할 대상 객체 반환 음수 : 현재 객체가 대상 객체보다 작은 경우 0 : 현재 객체가 대상 객체와 같은 경우 양수 : 현재 객체가 대상 객체보다 큰 경우 01 (제네릭 버전) IComparable public class Piggy : IComparable { public string Name { get; set; } public int Age { get; set; } public int CompareTo(Piggy other) { re.. 2023. 12. 10.
반응형