[OS] Synchronous, Asynchronous, Blocking, Non-Blocking
·
CS/OS
개요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 " ..
[OS] user mode & kernel mode
·
CS/OS
개요운영체제는 응용 프로그램과 하드웨어 간의 상호작용을 관리하고, 리소스를 효율적으로 활용하기 위한 다양한 작업을 한다. 이 작업에 대한 방식을 두 가지(유저 모드와 커널 모드)로 나누어, 컴퓨터 자원을 안정적으로 보호한다.이 두 가지 작업 모드에 대해서 알아보자.  Kernel이란커널은 OS의 핵심이되는 프로그램으로, 시스템의 모든 것(하드웨어의 동작, 메모리, CPU 등)을 제어한다.프로세스 간 통신과 System Call을 이용하여, 하드웨어 리소스에 접근하여 수행되는 응용 프로그램과 데이터 처리 사이의 중간다리 역할을 한다. 커널에는 모든 활성 프로세스를 추적하는 프로세스 테이블이 있어, 이들을 관리한다. 커널은 OS가 로드되면 메모리에 먼저 로드되고, OS가 종료될 때까지 메모리에 남아있다. M..
[spring] @Async와 SimpleAsyncTaskExecutor, TaskExecutor 그리고 thread pool
·
Dev/Spring & JPA
@AsyncAsynchronous excution을 지원하는 스프링 어노테이션이다.빈에 등록된 함수에 이 하지만 이러한 방식은 @Async 어노테이션을 적용하면 요청을 별도의 스레드(같은 Object data를 공유하는 스레드 중 하나)에서 실행한다. 이러한 Async 동작방식을 적용하여 호출자는 해당 메서드가 완료되는 것을 기다릴 필요가 없다. public interface EmailService { @Async void sendEmail(String template, Map properties);} → 위 예시에서 sendEmail 메소드는 별도의 스레드에서 실행된다.   Spring’s @Async annotation, indicating that it should run on a sep..
[OS] CPU Scheduling | preemptive & non-preemptive | 스케줄링 알고리즘 | 스케줄러 알고리즘 평가
·
CS/OS
스케줄링 개념앞단원까지 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하면 효율적으로 ..
[OS] Linker(링커)와 Linking(링킹)
·
CS/OS
1. Linker(링커)링커는 프로그래머가 작성한 여러 소스 파일을 하나로 연결해주는 역할을 한다. 이러한 링커의 역할에 의해 응용 프로그램을 하나의 큰 파일이 아니라, 작은 단위의 소스파일로 나누어서 효율적으로 프로그래밍을 할 수 있다. 우리가 평소에 코딩할 때 자주 사용하는 라이브러리들도 링커 덕분에 사용할 수 있는 것이다.링커가 분리된 소스파일을 연결해주는 역할을 하기 때문! 이렇게 모듈 단위(개별 소스 파일)로 코딩을 하면 시간적으로도 공간적으로도 효율성이 높다.프로그래머가 전체 코드를 수정하고 컴파일하는 대신 , 수정이 필요한 소스 파일의 내용만 컴파일 하면 되기 때문에 코드 관리의 효율성이 훨씬 높다. 2. Linking - 링커가 하는 일1) Symbol resolution define과 r..
sebinChu
'OS' 태그의 글 목록