Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Array
- 배열
- Java
- 트랜잭션 락
- 스프링 부트
- 배타락
- jvm
- 낙관락
- 디자인 패턴
- 스터디
- 마이크로서비스 아키텍처
- 파스칼 케이스
- 스네이크 케이스
- @Query
- Entity
- 공유락
- springDataJpa
- 자바
- 테스트 코드
- @Version
- 자료구조
- Repository 테스트
- Service 테스트
- do...while
- DTO
- 비링크
- 원시 자료형
- Controller 테스트
- 비즈니스 로직
- OOP
Archives
- Today
- Total
menuhwang
컴퓨터와 OS 본문
컴퓨터
컴퓨터는 크게 하드웨어와 소프트웨어로 나눌 수 있고, 소프트웨어는 커널과 Application으로 나뉜다.
컴퓨터의 모든 것이 여기서 시작한다고 볼 수 있다.
OS는 하드웨어를 제어하기 위한 SW이며, 커널과 일부 service, daemon까지를 OS라고 한다.
RedHat이나 Ubuntu, Android 등 같은 리눅스 커널 기반의 OS이다.
용어
인터럽트 (Interrupt)
인터럽트는 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것을 말한다.
IRQ: Interrupt Request 인터럽트 요청, 인터럽트 번호를 갖는다.
인터럽트가 발생되면 CPU가 하던일을 멈추고 인터럽트를 처리한다.
인터럽트에는 우선순위가 있고 우선순위에 따라 실행된다.
시스템콜 (System Call)
유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용한다.
API가 커널 함수를 호출하는 진입점.
컴퓨터 자원에 대한 직접 접근을 차단할 수 있음.
Hello World 예제로 보는 프로그램 실행 과정
#include <stdio.h>
int main() {
printf("Hello world!\n");
return 0;
}
1. printf라는 API를 호출한다.
2. printf가 System Call을 호출한다.
2.1. 커널 모드 진입
3. 디바이스 드라이버(ex: 그래픽)를 제어한다.
4. 디바이스 드라이버가 인터럽트를 요청한다. (IRQ)
5. CPU는 인터럽트에 대한 처리를 실행한다.
5.1. 모니터에 Hello World 출력
6. 처리가 완료되면 처리 완료에 대한 인터럽트를 발생한다.
7. System Call에 대한 제어권 반환.
8. API (printf)에 제어권 반환.
9. 완료!
참고
면접을 위한 CS 전공지식 노트 - 주홍철 지음
Comments