본문 바로가기
반응형

전체 글552

운영체제 - 문맥교환(Context switching), 프로세스의 상태 1. 문맥교환(Context switching) CPU를 다른 프로세스로 넘기는 작업이다. 실행이 정지되는 프로세스 문맥은 보존되고, 새로 실행되는 프로세스의 문맥이 활성화된다. 사용자 수준 문맥은 메모리에 남아 있으나(원래 메모리에 존재), CPU에 있던 레지스터의 내용들은 추후의 복구를 위해 저장(save)되고, 스케줄링된 새로운 프로세스의 문맥이 적재(store)된다. 프로세스 제어 블록(PCB, Process Control Block) 프로세스 제어 블록은 프로세스와 관련된 정보를 저장하는 자료 구조이다. 해당 프로세스를 식별하기 위해 꼭 필요한 정보들이 저장된다. 01 비자발적 문맥교환 시점 1) 시분할 기반의 스케줄링(타임 슬라이스 소진으로 인한 스케줄링)에 의한 경우 2) 인터럽트로 인해 C.. 2023. 4. 28.
운영체제 - 프로세스(Process) 프로세스 프로세스는 "실행중인 프로그램" 프로그램은 저장장치에, 프로세스는 메인 메모리에 존재한다. 1. 프로세스의 문맥(context) 프로세스는 상태 변화가 있는 동적인 개체이다. 사분할에 따른 멀티 태스킹 환경에서 프로세스는 항시 적어도 실행중단 및 속개 상태가 반복된다. 01 문맥 (context) 프로세스의 실행 중단 시 보존되고, 속개 시 다시 원상 복구 되어야 하는 프로세스의 모든 실행 정보 02 사용자 수준 문맥(User-level context) - 메인 메모리 현재 상태 텍스트 영역 - 프로그램 코드 부분 자료 영역 - 프로그램 광역 변수 부분 스택 영역 - 프로그램 실행시간 스택 부분 03 커널 수준 문맥(Kernal-level context) - 커널이 관리하는 내용 CPU내의 각종.. 2023. 4. 28.
백준 C# 3003 using System; namespace baek2 { class Program { static void Main(string[] args) { int[] number = { 1, 1, 2, 2, 2, 8 }; string input = Console.ReadLine(); string[] token = input.Split(); int[] dong = new int[6]; int[] answer = new int[6]; for(int i = 0; i 2023. 4. 27.
백준 C# 25083 using System; namespace baek2 { class Program { static void Main(string[] args) { Console.WriteLine(" ,r'\"7"); Console.WriteLine("r`-_ ,' ,/"); Console.WriteLine(" \\. \". L_r'"); Console.WriteLine(" `~\\/"); Console.WriteLine(" |"); Console.WriteLine(" |"); } } } 2023. 4. 27.
C# - 운영체제 쓰레드 코드(ThreadPool, Task 등) 운영체제 쓰레드 관련 이론 알아보러 가기 운영체제 - 쓰레드(Thread), 기아상태,쓰레드풀(Thread Pool) 쓰레드(Thread) 음식점 - 프로세스 직원 - 쓰레드 영혼 - CPU(코어) 01 전통적 프로세스(heavy weight process) 프로세스 간의 공유 변수를 갖기 어렵다. 운영체제가 제공하는 특수 구조체나 공유파일을 사 code-piggy.tistory.com 1. 쓰레드 만들기 01 ThreadStart대리자 혹은 ParameterizedThreadStart public delegate void ThreadStart(); public delegate void ParameterizedThreadStart(object? obj); 02 쓰레드가 시작될때 개체가 대리자를 지정하여 .. 2023. 4. 27.
운영체제 - 메모리 배리어(MemoryBarrier) 컴파일러 최적화 알아보러가기 운영체제 - 컴파일러 최적화(Release, volatile) 쓰레드를 사용할 떄 스택 메모리는 다 각자 자기만의 메모리 할당 전역 변수는 모든 쓰레들이 공통적으로 사용해서 동시 접근 가능하다. class Program { static bool _stop = false; static void ThreadMain() { Cons code-piggy.tistory.com 컴파일러 최적화 우리가 짠 코드를 컴파일러가 멋대로 튜닝을 해가지고 다른 결과물을 나오게 된다. 멀티 쓰레드에서는 독이 될수도 있다. 1. 하드웨어 최적화 01 Thread_1 static int x = 0; static int r1 = 0; static void Thread_1() { y = 1; // Stor.. 2023. 4. 27.
반응형