분류 전체보기 261

<운영체제> Thread Preemption

Involuntarily suspending one thread to schedule another is called preemption. Scheduling methods that utilize preemption instead of run to completion are said to be preemptive, and operating systems that employ these methods are called preemptive multitasking operating systems. 스케줄러에 의해 한 스레드가 비자발적으로 중비되는 것을 선점이라한다. 작업을 완료시키기 전에 선점을 활용하는 스케줄러를 preemptive라 한다, 그리고 이런 방법을 채용한 운영체제를 preemptive mult..

<운영체제> Concurrency VS Parallelism

병행성(Concurrency) 동시에 실행되는 것처럼 보이는 것. Logical Level에 속한다. Single Core 물리적으로 병렬이 아닌 순차적으로 동작할 수 있다. 실제로는 Time-sharing으로 CPU를 나눠 사용함으로써 사용자가 Concurrency를 느낄 수 있도록 한다. Multi Core 물리적으로 병렬로 동작할 수 있다. Case Mutex, Deadlock 병렬성(Parallelism) 실제로 동시에 작업이 처리가 되는 것. Physical(Machine) Level에 속한다. 오직 Multi Core에서만 가능하다. Case OpenMP, MPI, CUDA 음 한개 코어로 여러 작업을 수행하는게 하는게 병행성이고, 여러개 코어로 처리하는게 병렬성이구나. 나는 병행성이 뭔말인지..

<운영체제> 시분할 시스템이란

시분할 시스템(時分割 System, 영어: time-sharing)은 컴퓨터를 대화식으로 사용하려는 시도에서 탄생하였다. 시분할 운영 체제는 CPU 스케줄링과 다중 프로그래밍을 이용해서 각 사용자들에게 컴퓨터 자원을 시간적으로 분할하여 사용할 수 있게 해 준다. 음 여기서 이제 시분할 시스템과 라운드로빈 그리고 선점형 스케줄링과의 관계를 보자. 라운드 로빈 스케줄링(Round Robin Scheduling, RR)은 시분할 시스템을 위해 설계된 선점형 스케줄링의 하나로서, 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위(Time Quantum)로 CPU를 할당하는 방식의 CPU 스케줄링 알고리즘이다. [https://coding-factory.tistory.com/301] 운영체제에는 여러가지..

<스위프트> Parallel Programming with Swift (Target Queue, Dispatch Group, Barrier, Work Item, Semaphore & Dispatch Source)

일단 이 글이 지금 까지 본 글중 제일 설명이 잘되어 있다...... [https://medium.com/swift-india/parallel-programming-with-swift-part-2-4-46a3c6262359] 그래서 동기,비동기 정확한 차이, 비동기 안되는데 언제 비동기 되는거지 , 큐잔아. 들어온 작업 먼저 처리한다면서 비동기가 언제 의미가 있지? 그리고 콘커런트랑 시리얼은 정확히 무슨 차이인가, 이해를 해보자 이거지, 콘커런트가 병렬 처리니까, 이 방법이 병렬 처리인건 알겠는데 수행 순서상 들어온게 먼저 시작하긴 할 수 있는건가?? 프로세스의 우선순위에 관한건 시분할 시스템(라운드 로빈)상에서 우선순위에 따른 건가? async vs sync 차이는 결과물을 가져오는 순서에 초점을 두고..

<스위프트>수정중, UrlSessionTask를 resume,cancel,suspend해보자.!!!

How to stop/cancel/suspend/resume tasks on GCD queue [https://stackoverflow.com/questions/29492707/how-to-stop-cancel-suspend-resume-tasks-on-gcd-queue] You can't pause / cancel when using a GCD queue. If you need that functionality (and in a lot of general cases even if you don't) you should be using the higher level API - NSOperationQueue. This is built on top of GCD but it gives you the abili..