조준화의 오류정정

조준화의 오류정정

  • 분류 전체보기 N
    • TIL
    • 프로그래밍 언어
      • Java
      • JavaScript
      • C++\C
      • HTML\CSS
      • Markdown
    • 알고리즘 N
      • 문제풀이
      • 알고리즘 지식 N
    • CS
      • Computer Architecture
      • Operating System
      • Computer Network
      • 백엔드
      • Information Retrieval
      • Database System
      • ServerProgramming
    • AI
      • YOLO
      • CS231n
    • 프로젝트: Co Laobr
    • 프로젝트: 노인을 위한 나라는 있다.
  • 홈
  • 태그
  • 방명록
RSS 피드
로그인
로그아웃 글쓰기 관리

조준화의 오류정정

컨텐츠 검색

태그

BOJ 문자열 백트래킹 html 알고리즘 OS 재귀 til 자바 정렬 C++ DP java 문제풀이 시뮬레이션 BFS 우선순위 큐 dfs 백준 자료구조

최근글

댓글

공지사항

아카이브

CS/Operating System(24)

  • [OS] CPU 스케줄링의 기초적인 방식, FIFO, SJF, SRTF, RR, Priority scheduling

    1. CPU SchedulingCPU에 코어가 하나가 있는데, 그 코어를 어떤 프로세스에 줄 것인가를 결정하는 문제이다.ready 상태에 있는 프로세스 중 다음에 실행할 프로세스 하나를 뽑는 문제이다.컨텍스트 스위치가 많이 일어나므로 CPU 스케줄러가 자주 일어나고, 그만큼 스케줄링이 빠르게 일어나야 한다.그림의 매 포인트마다 CPU 스케줄링이 일어난다.Scheduling algorithm goalsAll systems굶어죽는 프로세스가 있어서는 안된다. CPU를 계속 안받는 일이 일어나면 안되고 골고루 받아야 한다는 말이다.어떤 얘는 1초만 쓰고, 어떤 얘는 10초만 쓰면 공평하지 않다.밸런스도 생각해야 한다. 전체 시스템 파트, CPU 메모리 I/O가 골고루 바쁘게 돌 수 있도록 밸런스 있게 스케줄링..

    2024.05.12
  • [OS] 세마포어와 모니터를 통해 동기화 문제를 해결해보자! - 데드락, Starvation

    spinlock의 문제점 [OS] 동기화 문제를 해결해보자! - Locks, Perterson’s AlgorithmLocks lock은 말 그대로 자물쇠 역할이다. 크리티컬 섹션에는 한 명만 들어가야 하는데, 들어갈 때 lock 하고, 나올 때 unlock 하는 방식으로 동기화 문제를 방지한다. acquire() : lock이 풀릴 때 까지 기다jun-n.tistory.com위의 글에서 동기화 문제 해결 방법으로 Locks을 공부했다. 그런데 사실 위에서 배운 Lock은 해결법 중 하나인 spinlock이다. spinlock 외에도 많은 Locks가 있는데, spinlock에 어떤 문제가 있어서 새로운 Lock이 등장하게 되었을까?spinlock은 CPU를 너무 낭비한다. (wasteful)spinloc..

    2024.04.29
  • [OS] 동기화 문제를 해결해보자! - Locks, Perterson’s Algorithm

    Locks lock은 말 그대로 자물쇠 역할이다. 크리티컬 섹션에는 한 명만 들어가야 하는데, 들어갈 때 lock 하고, 나올 때 unlock 하는 방식으로 동기화 문제를 방지한다. acquire() : lock이 풀릴 때 까지 기다렸다가 풀리면 잡는다. 풀려있다면 그냥 잡는다. 대기하다 보면 여러 쓰레드가 대기할 수 있다. 여러 쓰레드들을 다 고려해서 acquire()하는 메커니즘을 고려해야 한다. release() : unlock Lock은 초기에 열려있다. 크리티컬 섹션에 들어갈 때 acquire을 부르고 나올 때 release 한다. acquire과 release 사이에 쓰레드는 락을 잡고 있어야 한다. 또, 최대 하나의 쓰레드만이 락을 잡고 있어야 한다. 아래의 그림을 잘 이해하자! Lock은 ..

    2024.04.13
  • [OS] Synchronization & Critical sections & Synchronization Problem

    Synchronization 멀티쓰레드로 만들어진 프로그램들이 서로 잘 돌아가게 해야 한다. 여러 자원을 공유하는 멀티 쓰레드 프로그램들이 서로 잘 협력해야 한다. 멀티 쓰레드들이 실행되면서 문제를 일으킬 수 있는데, 그걸 Synchronization 문제라 한다. 이 협력을 통제해야만 문제가 생기지 않는다. 두 개의 쓰레드가 있는 프로세스를 생각해 보자. 쓰레드들의 스케줄링은 OS 내부의 스케줄러가 결정한다. 그런데 가끔, 쓰레드들의 실행 순서에 따라서 문제가 생기거나 결과가 바뀔 수 있다. 운영체제의 스케줄링을 프로그래머가 결정할 수 없다. 그런데 프로그래머는 스케줄링을 컨틀로 해야 할 때가 있다. 여러 쓰레드의 실행 순서, 프로세스들 간의 스케줄링을 컨트롤해야 할 때가 분명히 있다. 예시로 보자. ..

    2024.04.13
  • [OS] User-level 쓰레드 VS 커널 쓰레드, Go Language

    커널/유저 레벨 쓰레드 쓰레드는 누가 생성하고 관리할까? OS(커널)에서 시스템 콜을 통해 쓰레드를 생성하고 관리한다. pthreads도 OS가 관리하는 쓰레드이다. 유저 레벨 프로세스에서 라이브러리를 통해 쓰레드를 관리할 수 있다. 어떤 쓰레드가 더 좋을까? 예를 들어서 생각해 보자. 팩토리얼을 재귀로 구현하면 함수가 계속 불리고, 함수를 시작하고 끝내기 위해 그만큼 어셈블리어 코드가 몇 줄씩 들어가게 된다. 따라서 성능적인 측면에서 반복문을 사용하는 방식이 좋다. 또, local function으로 myswap() 같은 걸 만들 수 있다. 또 library function으로 strcpy() 같은 것도 있고, system call에도 getpid() 같은 게 있다. 만약 세 함수가 모두 같은 역할을 ..

    2024.04.12
  • [OS] 프로세스와 쓰레드의 비교, pthreads, Signal handling

    Processes vs Threads 쓰레드는 하나의 프로세스에 담겨있다. 반면에, 프로세스는 멀티플 쓰레드를 가질 수 있다. 쓰레드끼리는 같은 address 내에 있으니 싸게 데이터를 공유할 수 있다. 쓰레드는 운영체제가 관리하는 스케줄링의 단위가 된다. 프로세스는 쓰레드를 수용하기 위한 컨테이너로 생각하면 된다. 프로세스와 쓰레드의 유사한 점 각자의 로지컬한 control flow를 가질 수 있다. 각자 동시에 다른 것들과 실행될 수 있다. 컨텍스트 스위치 프로세스와 쓰레드의 차이점 쓰레드는 코드와 데이터를 공유한다. 그러나, 프로세스는 그렇지 않다. 같은 코드와 데이터를 복제해 온다. 쓰레드가 프로세스보다 훨씬 저렴하다. 리눅스에선 거의 2배 차이. address space를 새로 만들지 않아도 되..

    2024.04.11
이전
1 2 3 4
다음
티스토리 github notion
© 2018 TISTORY. All rights reserved.

티스토리툴바