본문 바로가기
반응형

전체 글552

운영체제 - 커널(Kernel), 커널모드, 사용자모드 운영체제 두 가지 역할을 가진 소프트웨어 1) 하드웨어(CPU, Memory, Devices 등) 관리 2) 응용프로그램과 하드웨어 간의 인터페이스 역할을 수행하여 소프트웨어가 하드웨어에 액세스 Linux 운영체제 중 하나이고 세 가지 구성요소로 구성 1) 커널(Kernel) : 하드웨어와 직접 상호 작용하고 운영 체제의 기능을 제공한다. 2) 시스템 라이브러리(System Libraries) : 응용 프로그램이 운영체제 기능을 사용할 수 있도록 인터페이스를 제공하는 라이브러리들이다. 3) 시스템 유틸리티(Sysem Utilitites) : 운영체제 관리 및 유지 보수 작업에 사용되는 유틸리티 프로그램들이. 커널(Kernel) 운영체제의 핵심 기능을 구현하고 하드웨어와 응용프로그램간의 상호 작용을 관리하.. 2023. 5. 26.
운영체제 - Backoff(Thread.Sleep(0), Thread.Yield()) 이 코드를 실행한 다음에 실패했을때 어떤 행동을 취하는 것이 락을 구현할때 어떤 방법을 사용할지를 결정하게 된다. int expected = 0; int desire = 1; int original = Interlocked.CompareExchange(ref _locked, desire, expected); if (original == 0) break; 실패 한다음에 바로 루프를 시작하면서 재차 시도를 하면 스핀락이 되는 것이고 기다렸다가 다시 오면 Backoff가 된다. SpinLock 알아보러 가기 운영체제 - SpinLock(스핀락) - Test-and-Set, Compare-and-Swap SpinLock(스핀락) 동기화 기법 중 하나로 여러 쓰레드가 공유자원에 접근한느 것을 제어하기 위해 사용된.. 2023. 5. 26.
백준 C# - 11005 +) 풀이 관련문제 보러 가기 백준 C# - 2745 using System; using System.Collections.Generic; namespace baek2 { class Program { static void Main(string[] args) { string input = Console.ReadLine(); string[] token = input.Split(); string n = token[0]; int m = int.Parse(token[1]); Dictionary dic = new Di code-piggy.tistory.com 풀이 01 Dictionay부분은 위의 2745 참조 02 반복문을 통해서 B진법으로 바꾸기 while (div>0) { int remainder = div % m; s.. 2023. 5. 25.
백준 C# - 2745 관련문제 보러가기 백준 C# - 11005 +) 풀이 관련문제 보러 가기 백준 C# - 2745 using System; using System.Collections.Generic; namespace baek2 { class Program { static void Main(string[] args) { string input = Console.ReadLine(); string[] token = input.Split(); string n = token[0]; int m = code-piggy.tistory.com using System; using System.Collections.Generic; namespace baek2 { class Program { static void Main(string[] a.. 2023. 5. 25.
운영체제 - Semaphore(세마포어), Mutex(뮤텍스) Mutex 여러 쓰레드가 공유 자원에 접근하는 것을 제어하기 위해 사용된다. 커널 동기화 객체이다. 오직 한 번에 하나의 프로세스 또는 쓰레드만이 임계구역에 진입할 수 있도록 한다. 01 WaitOne Mutex에 대한 접근을 시도하고 허용될때까지 대기한다. public virtual bool WaitOne (); 02 ReleaseMutex Mutex를 한번 해제한다. public void ReleaseMutex (); Code 예시 static Mutex mutex = new Mutex(); static void Main(string[] args) { for (int i = 0; i < 5; i++) { Thread thread = new Thread(MutexExample); thread.Name .. 2023. 5. 23.
운영체제 - SpinLock(스핀락) - Test-and-Set, Compare-and-Swap SpinLock(스핀락) 동기화 기법 중 하나로 여러 쓰레드가 공유자원에 접근한느 것을 제어하기 위해 사용된다. race condition을 해결하고 mutal exclusion을 구현하기 위해 이용된다. 스핀락 구현 class SpinLock { // true이면 누가 화장실 사용중, false이면 빈 화장실 // volatile 가시성을 보장 volatile bool _locked = false; // 열쇠 획득 함수 public void Acquire() { // 잠금이 풀릴때까지 계속 뺑뺑 돈다 while(_locked) { // 잠금이 풀릴때까지 기다린다 } // 이제 내가 들어간다 _locked = true; } // 열쇠 반납 함수 public void Release() { // 나 나간다 .. 2023. 5. 22.
반응형