본문 바로가기

CS/OS12

[OS] 멀티 프로세서, 멀티 태스킹, 멀티 프로세스, 멀티 스레드! 개요 멀티 프로세스(여러 프로세스가 병렬적으로 일하는 것)공부를 하면서 여러 자료를 참고하는데, 이 4개의 용어에 대해 정의하는 바가 다들 달랐다. 여러 자료를 참고하면서 혼선이 왔고, 많이 찾아보고 구글링하며 내린 각각의 차이에 대해 명확하게 정리하는 포스팅이다. 멀티 프로세서(Multi-Processor, Multi-Processing) 단일 시스템 내에서 다중 cpu로 여러 작업을 처리하는 것이다. 하나의 cpu는 하나의 작업만 처리할 수 있다. 그냥 스펙을 쭉쭉 눌려서 여러 cpu를 두고 돈도 빵빵하게 쓰며 성능을 높이는 것이 멀티 프로세서-멀티 프로세싱이다. 장점 독립된 구조로 안정성이 높고, 하나의 프로세스에 문제가 생기더라도 다른 프로세스들에 영향을 주지 않는다. 단점 비용, 전력소모 등등 .. 2024. 3. 10.
[OS] Synchronous, Asynchronous, Blocking, Non-Blocking 개요 Synchronous & Asynchronous | Blocking & Non-Blocking의 개념과 실제로 어떻게 활용하는지, 네 개념의 상관관계는 어떻게되는지 정리하는 포스팅이다. Synchronous Sync 프로세스들은 서로 실행 시점에 따라 순서를 가지고, 순차적으로 실행이 된다. 아래와 같은 Java 예제 코드와 Synchronous한 동작 과정은 다음과 같다. public class Person { private String name; public Person(String name) { this.name = name; } public void introduce() { System.out.println("Hello, my name is " + name + "."); } } public .. 2024. 1. 31.
[OS] user mode & kernel mode 개요 운영체제는 응용 프로그램과 하드웨어 간의 상호작용을 관리하고, 리소스를 효율적으로 활용하기 위한 다양한 작업을 한다. 이 작업에 대한 방식을 두 가지(유저 모드와 커널 모드)로 나누어, 컴퓨터 자원을 안정적으로 보호한다. 이 두 가지 작업 모드에 대해서 알아보자. Kernel이란 커널은 OS의 핵심이되는 프로그램으로, 시스템의 모든 것(하드웨어의 동작, 메모리, CPU 등)을 제어한다. 프로세스 간 통신과 System Call을 이용하여, 하드웨어 리소스에 접근하여 수행되는 응용 프로그램과 데이터 처리 사이의 중간다리 역할을 한다. 커널에는 모든 활성 프로세스를 추적하는 프로세스 테이블이 있어, 이들을 관리한다. 커널은 OS가 로드되면 메모리에 먼저 로드되고, OS가 종료될 때까지 메모리에 남아있다.. 2024. 1. 30.
[CS] 비트마스킹 | 비트 연산자 | 비트마스킹과 집합 비트마스킹(Bitmasking a.k.a. lightweight) 컴퓨터는 숫자나 데이터를 이진수로 표현한다. 이진 표현을 수정하고 활용하는 과정이 비트마스킹이다. 비트마스킹은 비트 연산을 사용하여 특정 비트의 값을 설정하거나 검사하는 방법을 제공한다. 비트마스킹을 통해 메모리를 절약하고 연산 속도를 향상시킬 수 있다. 비트 연산자 AND(a&b) 둘다 1이면 1, 아니면 0 OR(a|b) 둘다 0이면 0, 아니면 1 XOR(a^b) 같으면 0, 다르면 1 NOT(~a) 0 → 1, 1 →0 LS(a > 2) a를 2비트 만큼 오른쪽 시프트 비트마스크와 집합 비트마스크를 활용하여 집합 연산을 쉽고 빠르게 사용할 수 있다. 이를 통해 문제 해결을 쉽고 빠르게 할 수 있다! 원소의 개수가 N인 집합이 있다고.. 2023. 7. 19.
[OS] CPU Scheduling | preemptive & non-preemptive | 스케줄링 알고리즘 | 스케줄러 알고리즘 평가 스케줄링 개념 앞단원까지 cpu는 hw 자원의 효율적인 사용을 위해 context-switching을 통해 마치 concurrency(동시병렬)한 것처럼 hw 자원들을 사용한다고 배웠다. 이러한 context-switching을 관장하는 것이 CPU scheduling이다. 말 그대로 cpu의 스케쥴을 관리한다. [스케쥴링 전제] 일단 스케쥴러의 판단 하에 있으려면, 프로세스들은 모두 메모리에 load가 되어있는 상태이어야 한다. multi programming 환경이어야 한다. batch programming은 schedule을 나눈다는 가정 자체가 성립 안되니 당연하다. [cpu schedular의 역할] 스케줄러가 ready queue에서 작업을 선택해서 CPU burst하고 나머지는 I/O하면 효.. 2023. 5. 11.
[OS] 운영체제가 하는 일4가지 https://cobinding.tistory.com/entry/OS-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EB%9E%80-%EB%AA%A9%EC%A0%81-%EC%99%9C%EB%B0%B0%EC%9B%80 [OS] 운영체제란 | 목적 | 왜배움? [운영체제란] 컴퓨터 하드웨어 바로 위에 설치되어, sw와 hw를 연결하는 sw 계층 좁은 의미 : 커널(운영체제의 핵심, 부팅 이후 항상 메모리에 상주) 넓은 의미 : 각종 시스템들 [운영체제의 목적] 1. cobinding.tistory.com OS는 컴퓨터 자원을 효율적으로 관리하고 user와 hw 간의 효용성을 위해 존재한다고 배웠었다. 그럼 os는 어떤 방식으로 일을 하며 이를 제공해주는지 알아보자. 크게 4가지가 있다. .. 2023. 4. 15.
[OS] 프로세스 | 프로세스의 상태 | PCB | context switching 프로세스 프로세스는 실행 중인 프로그램이다. Process context(프로세스의 문맥) 특정 시점에서의 cpu 수행 상태를 나타내는 하드웨어 문맥 PC가 어디를 가리키고 있는가? 각종 레지스터 프로세스의 주소 공간(code, data, stack) 프로세스 A의 주소공간에 어떤 내용이 담겨있는가? (stack에 쌓인 함수, bss에 있는 변수의 값) 프로세스 관련 커널 자료구조 PCB(Process Control Block): 프로세스 하나가 실행될 때 마다 이를 관리하기 위해 생성. cpu를 얼마나 줘야할지 등 Kernel Stack Process State(프로세스의 상태) 프로세스는 상태가 변경되며 수행된다. New 프로세스가 생성 중인 상태 Running cpu를 잡고 instruction을 .. 2023. 4. 7.
[OS] 컴퓨터 시스템 구조 | 저장장치 계층 | 프로그램 실행 과정 | 커널 | 동기식/비동기식 IO | DMA 컴퓨터 시스템 구조 cpu에는 instruction set에 따라서 N bytes로 구성된 기계어 조합이 구성되어있다. 그래서 매 순간 CPU는 메모리에 어느 주소에 담긴 명령어들을 불러와서 일을 수행하게됨. cpu에는 메모리 주소를 가르키는 pc 레지스터에서 가리키는 메모리 위치에 가서 명령어를 불러온다. 불러오자마자 pc + N byte cpu는 다음 순서의 명령어를 실행하기 전에 interrupt를 체크한다. ⭐️만약 인터럽트가 들어왔다면 하던 작업을 멈추고 CPU 제어권을 OS에게 주게 됨. ⭐️OS는 인터럽트 상황에 맞게 처리해야 할 커널 함수를 수행한다. 항상 순차적 x. 함수 호출이나 제어 구조가 오면 JMP하게됨. mode bit = 0 or 1 0 : 모든 기계어 집합 실행 가능/운영체제.. 2023. 4. 6.
[OS] Mode bit | Device Controller | Interrupt multi processing과 timesharing을 할 때에 메모리, 유저 프로세스, I/O 작업들은 서로 보호되어야 한다. 따라서 CPU는 수행 모드를 2 가지(kernel mode, user mode)로 나누어 이 메카니즘이 가능하도록 지원한다. 이 2 가지 모드는 mode bit로 제어한다. Protection & Mode bit 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 (OS가 사용자 프로그램을 제어함.) 💡 Mode bit을 통해 하드웨어적으로 두 가지 모드의 operation 지원 1 = user mode : 사용자 프로그램 수행 0 = kernel 모드 : OS 코드 수행 (=시스템 모드) 보안을 해칠 수 있는 중요한 명령어(.. 2023. 3. 17.
[OS] os를 공부하기 위해 알아야 하는 용어들 컴퓨터 시스템 구조 각각의 I/O device에는 이 디바이스를 관리하는 작은 cpu가 붙어있음(= device controller) cpu 안에도 register 있다. cpu는 항상 메모리에 있는 instructions만 실행한다. timer : 특정 프로그램이 cpu를 독점하는 걸 막기 위한 장치(time sharing) ➡️ 하나의 instructions이 긴 시간 잡아먹으면 interrupt 걸림. interrupt 걸리면 running ➡️ blocked 상태로 interrupt 사용자 프로그램은 항상 OS를 통해 I/O 장치에 접근할 수 있다. Multiprogramming/Multiple processing 메모리에 여러 프로그램이 동시에 올라가는 방식 * 같이 알아둬야할 것 cpu는 사실.. 2023. 3. 10.
[OS] 운영체제 운영체제 컴퓨터 하드웨어 바로 위에 설치되어, sw와 hw를 연결하는 sw 계층 좁은 의미 : 커널(운영체제의 핵심, 부팅 이후 항상 메모리에 상주) 넓은 의미 : 각종 시스템들 운영체제의 목적 1. 자원을 효율적으로 관리하는 것 hw 자원(cpu, 메모리, I/O 장치 등)을 관리 sw 자원(프로세스, 파일, 메시지 등)을 관리 형평성있는 자원 배분 2. 사용자가 편리하게 컴퓨터를 사용할 수 있는 환경을 제공하는 것. 운영체제의 분류 ✅ 동시 작업 가능 여부를 기준으로 2가지로 나뉜다. 1. 단일 작업(single tasking) 한 번에 하나의 작업만 처리 ex) MS-DOS 프롬프트 2. 다중 작업(multi tasking) 동시에 두 개 이상의 작업 처리 ex) UNIX, MS Windows ✅ .. 2023. 3. 9.
[OS] Linker(링커)와 Linking(링킹) 1. Linker(링커) 링커는 프로그래머가 작성한 여러 소스 파일을 하나로 연결해주는 역할을 한다. 이러한 링커의 역할에 의해 응용 프로그램을 하나의 큰 파일이 아니라, 작은 단위의 소스파일로 나누어서 효율적으로 프로그래밍을 할 수 있다. 우리가 평소에 코딩할 때 자주 사용하는 라이브러리들도 링커 덕분에 사용할 수 있는 것이다. 링커가 분리된 소스파일을 연결해주는 역할을 하기 때문! 이렇게 모듈 단위(개별 소스 파일)로 코딩을 하면 시간적으로도 공간적으로도 효율성이 높다. 프로그래머가 전체 코드를 수정하고 컴파일하는 대신 , 수정이 필요한 소스 파일의 내용만 컴파일 하면 되기 때문에 코드 관리의 효율성이 훨씬 높다. 2. Linking - 링커가 하는 일 1) Symbol resolution defin.. 2022. 10. 24.