본문 바로가기
백엔드/Computer Science(CS)

[스터디]운영체제 #3

by 수박통통 2023. 1. 20.

프로그램 실행중에 인터럽트가 발생하거나 시스템콜을 호출하게 되면 커널모드로 전환

  • 유저모드 
    • 우리가 개발하는 프로그램은 일반적으로 해당 모드에서 실행
  • 커널모드
    • 프로그램의 현재 CPU상태를 저장함
    • 커널이 인터럽트나 시스템콜을 직접 처리. 즉 cpu 에서 커널코드가 실행됨
    • 처리가 완료되면 중단됐던 프로그램의 cpu상태를 복원(but, 가끔 중단됐던 프로그램이 다시 실행되는게 아니라 다른 프로그램을 실행됐다가 해당 프로그램이 나중에 시작할때도 있다)
    • 복원 후 다시 통제권을 프로그램에게 반환(커널모드 -> 유저모드)


커널이란?

  • 운영체제의 핵심
  • 시스템의 전반을 관리/감독하는 역할
  • 하드웨어와 관련된 작업을 직접수행

 

왜 커널모드를 만들었을까? 

-> 시스템이 안정정적으로 동작할 수 있도록 보호하기 위해

(ex. 우리가 개발한 프로그램이 함부로 하드웨어를 점유하면서 다른 프로그램에 영향을 주고 등 그런일들을 방지)


인터럽트란?
시스템에서 발생한 다양한 종류의 이벤트 혹은 그런 이벤트를 알리는 메커니즘

인터럽트 종류

  • 전원에 문제가 생겼을때
  • I/O 작업이 완료됐을 때
  • 시간이 다됐을 떄(timer관련)
  • 0으로 나눴을 때
  • 잘못된 메모리 공간에 접근을 시도할때
  • 위에 두가지는 트랩이라고 불림(프로그램상에서의 오류)

인터럽트의 종류에 대해 조금만 더 깊게 알아보자!!!

(소프트웨어 인터럽트, 하드웨어 인터럽트) / (내부 인터럽트, 외부 인터럽트)

(소프트웨어 인터럽트, 내부 인터럽트, 외부 인터럽트) 이런식으로 나누기도 함

Hardware Interrupt

I/O 장비에서 아무때나 전달되어오는 신호

보통 ‘인터럽트’ 라고 하는 것.

입출력 장치에 의한 경우와 같이 외부의 돌발적인 상황이 발생하였을 경우 CPU는 실행중인 작업들을 일시 중지하고 정해진 인터럽트 작업을 수행

  • Maskable interrupt

Interrupt Mask가 가능한 인터럽트(Interrupt Mask : 인터럽트가 발생하였을 때 요구를 받아들일지 말지 지정하는 것)

CLI/STI instruction 에 의해서 무시될 수 있는 interrupt.

인텔 CPU에서 INTR pin 으로 신호가 들어옴.

입출력 장치가 제기하는 인터럽트 요청과 거의 대부분의 인터럽트가 여기에 해당

  • NMI(non-maskable interrupt)

Interrupt Mask 가 불가능한 인터럽트

무시될 수 없는 interrupt

인텔 CPU에서 NMI pin 으로 신호가 들어옴.

몇몇 심각한 사건(정전, 하드웨어 고장 등 어찌할 수 없는 오류)등이 해당

Software Interrupt = Exception 

CPU 외부에서 발생하는 interrupt와는 달리 CPU 내부에서 발생하는 신호

명령어를 실행하다가 만나게 되는 문제점들에 대해서 CPU가 스스로 발생시키는 신호.

보통 ‘예외’ 라고 명시

에러나 커널이 처리해야할 비정상적인 상황에 CPU가 대처하기 위한 작업

예외처리는 항상 instruction(명령어)과 동기화 되어 발생


외부 인터럽트

  • 전원 이상 인터럽트(Power fail interrupt) : 말그대로 정전, 파워 이상 등
  • 기계 착오 인터럽트(Machine check interrupt) : CPU의 기능적인 오류
  • 외부 신호 인터럽트(External interrupt)
    - 타이머에 의한 인터럽트 : Preemptive개념을 생각하면 된다. 자원이 할당된 시간이 다 끝난 경우
    - 키보드로 인터럽트 키를 누른 경우 : 대표적으로 Control + Alt + Delete
    - 외부장치로부터 인터럽트 요청이 있는 경우 : I/O 인터럽트 아님!! 다른 개념이다
  • 입출력 인터럽트(I/O Interrupt)
    - 입출력장치가 데이터 전송을 요구하거나 전송이 끝나 다음 동작이 수행되어야 할 경우
    - 입출력 데이터에 이상이 있는 경우

 

내부 인터럽트

  • 잘못된 명령이나 잘못된 데이터를 사용할때 발생하며 Trap이라 부른다.
  • 프로그램 검사 인터럽트(Program check interrupt)
    - Division by zero
    - Overflow/Underflow
    - 기타 Exception
  • 소프트웨어적이 내용이나 분류상 인터럽트가 아니다!

외부 인터럽트

  • 입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생
  • 전원 이상, 기계 착오, 외부 신호, 입출력

내부 인터럽트

  • Trap이라고 부르며, 잘못된 명령이나 데이터를 사용할 때 발생
  • 0으로 나누기가 발생, 오버플로우, 명령어를 잘못 사용한 경우 (Exception)

소프트웨어 인터럽트

  • 프로그램 처리 중 명령의 요청에 의해 발생한 것 (SuperVisorCall  인터럽트)
  • 사용자가 프로그램을 실행시킬 때 발생
  •  
  • 소프트웨어 이용 중에 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 동작이 수행된다.

 

 


인터럽트가 발생하면

=> cpu에서는 즉각적으로 인터럽트 처리를 위해 커널 코드를 커널 모드에서 실행
여기서 즉각적으로?

=> 실행중이던 명령어까지는 마무리 후에 인터럽트 처리를 위해 커널이 통제권을 넘겨받아서 관련처리를 함

시스템콜이란?
=> 프로그램이 os커널이 제공하는 서비스를 이용하고 싶을 때 시스템콜을 통해 실행

시스템콜의 종류

  • 프로세스/스레드 관련
  • 파일 I/O 관련
  • 소켓 관련
  • 장치관련
  • 프로세스 통신 관련

시스템콜이 발생하면 해당 커널코드(각각의 시스템콜에 대응하는 커널코드가 존재)가 커널모드에서 실행됨

 



예제 : 파일 read의 상황, 스레드1, 스레드2가 존재, cpu는 싱글코어

1
유저모드
t1 - running
t2 - ready

 

>>>>>>>>>>

read라는 시스템콜 호출
커널 모드 전환
>>>>>>>>>>

 

2
커널 모드
t1 cpu 상태 저장
파일 읽을 준비 (i/o작업, 즉, ssd로부터 파일을 읽어오는 작업이기때문에 파일의 위치를 찾아서 버퍼에서 읽을 수 있도록 준비시키는 작업)
t1- waiting 로 변환(파일읽을 준비가 될때까지 기다려야하기 때문에)
t2- running 로 변환

 

>>>>>>>>>>
유저모드로 전환
>>>>>>>>>>

 

3
유저모드
t2 실행중

>>>>>>>>>>>

인터럽트 발생(파일 준비 끝)

커널모드로 전환

>>>>>>>>>>>


4
커널모드
t2 cpu 상태 저장
t1 - ready 로 변환(파일이 준비가됐기 때문에 다음 스케쥴링에서 선택을 받아 cpu에서 실행을 해야하기 때문)
t2 cpu 상태 복원

 

>>>>>>>>>>>

유저모드로 전환
>>>>>>>>>>>

 

5

t2 실행중



여기서 멀티태스킹이므로 t2가 자기에게 주어진 시간을 다쓰게 됐다면?

 

>>>>>>>>>>>>

인터럽트 다시 발생

커널모드 전환

>>>>>>>>>>>>

 

6
커널모드
t2 cpu 상태 저장
t2 - ready 로 변환
t1 - running 로 변환
t1 cpu상태복원

 

>>>>>>>>>>>>>
유저모드로 전환
>>>>>>>>>>>>>

 

7
유저모드
t1 실행중(파일 읽는 중)



하드웨어 혹은 시스템 관련 기능은 어떤 프로그램이라도 반드시 시스템 콜을 통해서만 사용가능

그런데 우리는 평소에 시스템콜을 직접적으로 쓰지 않는다. 어떻게 우리가 만든 프로그램들이 시스템콜에 해당하는 작업들을 할 수 있는 것인가?

=> 프로그래밍 언어들이 시스템콜을 포장하여 간접적으로 사용할 수 있도록 제공했기 때문(ex. java.lang.Tread class 의 native void start0())

 

 

생각해봤던 질문

더보기

시스템콜이란?
A) 프로그램이 os커널이 제공하는 서비스를 이용하고 싶을 때 시스템콜을 통해 실행
A) OS에 인터페이스하기 위한 방법

그렇다면 시스템 콜의 예시 하나 말해보기
A) fork( ), exec( ), wait( )와 같은 것들은 Process 생성과 제어를 위한 System call
프로세스/스레드 관련,
파일 I/O 관련,
소켓 관련,
장치관련,
프로세스 통신 관련 중 하나 예시로 말하면 됩니다

시스템콜이 어떤 과정으로 실행되는지 설명해보시오
A1) 
사용자 프로세서가 시스템콜을 요청하면 제어가 커널로 넘어간다. (사용자모드 -> 커널모드) 
커널은 내부적으로 각각의 시스템콜을 구분하기 위해 기능별로 고유번호를 할당해 놓는다. 
해당번호는 커널내부에 제어루틴을 정의한다.
커널은 요청받은 시스템 콜에 대응하는 기능번호를 확인한다.
커널은 그 번호에 맞는 서비스 루틴을 호출하게 된다.
서비스 루틴을 모두 처리하고나면 커널 모드에서 사용자 모드로 다시 넘어온다.

A2)
1. 시스템콜 어셈블리 코드 실행
2. 시스템콜 인터럽트 명령어 호출(유저 모드 -> 커널 모드로 전환)
3. IDT (Interrupt Descripter Table) 참조
4. kernal function 호출
5. 함수 실행 종료 - System_call 을 수행한 이후 커널모드에서 사용자모드로 전환됩니다.


시스템콜의 유형에는 어떤 것이 있는가?
A) 프로세스/스레드 관련,
파일 I/O 관련,
소켓 관련,
장치관련,
프로세스 통신 관련

서로 다른 시스템 콜은 어떻게 구분할 수 있는가?
A) 커널은 내부적으로 각각의 시스템콜을 구분하기 위해 기능별로 고유번호를 할당해 놓는다. 

시스템콜은 어떤 인터럽트에 해당하는가?
A) 소프트웨어 인터럽트

인터럽트란?
A1) 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것
A2) 시스템에서 발생한 다양한 종류의 이벤트 혹은 그런 이벤트를 알리는 메커니즘

인터럽트 처리 방식을 설명해보시오
1. 실행중인 작업을 중단하고 현재 태스크의 Context(레지스터 값)을 스택에 저장한다. (유저모드 -> 커널모드)
현재 프로그램 상태(PC, SR)를 저장하는 이유는 인터럽트 처리를 끝내고 작업을 원상 복구하기 위해서다.
2. 인터럽트를 처리하기 위해서 인터럽트 벡터 테이블을 참조하여 ISR(Interrupt Service Routine) 주소 값을 얻는다.
+) 인터럽트 벡터 테이블이란 인터럽트 핸들러(ISR) 주소를 저장하고 있는 테이블을 말하고, 인터럽트 핸들러(Interrupt Service Routine)는 인터럽트를 처리하기 위한 코드이고, 함수의 형태를 가지고 있다.
3. 인터럽트 핸들러를 실행한다.
4. 원래 작업으로 돌아오기위해 아까 스택에 저장해두었던 Context를 복원한다.
5. PC값을 이용해 인터럽트 발생 전 수행하던 작업을 계속 진행한다.

이 부분은 대충 설명할 수 있을정도면 충분할 듯

폴링방식이란?
A1) 사용자가 명령어를 사용해 입력 핀의 값을 계속 읽어 변화를 알아내는 방식
+) 인터럽트 요청 플래그를 차례로 비교하여 우선순위가 가장 높은 인터럽트 자원을 찾아 이에 맞는 인터럽트 서비스 루틴을 수행한다. (하드웨어에 비해 속도 느림)

A2) CPU가 주변 입출력 장치들(키보드, 센서, LCD 등)에서의 변화를 지속적으로 계속 확인하고 그에 따라 프로그램을 처리하는 방식


폴링방식과 인터럽트 방식의 차이
A) 
인터럽트 방식
장점
1. 요청이 들어올 때만 처리하기 때문에 CPU효율이 떨어지지 않는다.
2. 입출력 장치에서의 요청(인터럽트)가 발생하는 정확한 타이밍을 알 수 있기 때문에 즉각 반응할 수 있다.
단점
1. 우선순위 등 생각해야 할 게 많아서 폴링에 비해 구현이 복잡하다.
2. 인터럽트를 실행하기위해 Context Switching 등이 일어나면서 많은 비용이 소모될 수 있다.
폴링방식
장점
1. 정해진 순서에 의해 명령을 반복적으로 처리하므로 프로그램을 작성하고 이해하기 쉽다(소규모 프로그램을 작성할 때만).
단점
1. 입출력 장치들과의 상호작용을 폴링 방식으로 많이 할 수록 CPU를 점유하는 시간이 증가하기 때문에 성능이 크게 떨어진다.  
2. 한 루프를 다 돌아야지만 상태 변화를 확인 할 수 있다. 즉, 정확한 타이밍에 인터럽트가 발생했는지 알 수 없고 폴링 루프가 길어질 수록 반응 속도가 늦어지거나 실행되지 않을 가능성이 높아진다. 



하드웨어 인터럽트와 소프트웨어 인터럽트를 설명하시오.
A) 
하드웨어 인터럽트는 I/O장비에서 아무때나 전달되어 오는 신호로 Maskable 인터럽트와 NMI(non-maskable interrupt) 가 존재
전자는 interrupt mask가 가능하며(인터럽트가 발생하였을 때 요구를 받아들일지 말지 지정하는것) 그렇기에 무시가 가능하다. 입출력장치가 제기하는 인터럽트 요청과 거의 대부분의 인터럽트가 여기에 해당한다.
후자는 무시될 수 없는 인터럽트로 몇몇 심각한 사건(정전, 하드웨어 고장 등 어쩔수없는 오류) 등이 해당

소프트웨어 인터럽트는 cpu 내부에서 발생하는 신호로 명령어를 실행하다가 만나게 되는 문제점들에 대해서 cpu가 스스로 발생시키는 신호

외부, 내부, 소프트웨어 인터럽트로 분류될 경우에서의 소프트웨어 인터럽트는
프로그램 처리중 명령의 요청에 의해 발생한 것으로 사용자가 프로그램을 실행시킬 때 발생한다. 소프트웨어 이용 중에 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 동작이 수행된다.

 

 


인터럽트가 동시에 일어났을 때는 어떻해야 할까?
A) 현재 인터럽트가 끝나고 바로 처리해주는 순차 처리가 있고, 만약 우선 순위가 더 높다면 현재 처리중인 인터럽트를 잠시 멈추고 우선순위가 더 높은 인터럽트를 먼저 처리할 수도 있다.

 

 


OSI 7계층

  • Application(응용) 계층 : 최종 목적지로 응용 프로그램과 연관하여 서비스를 수행하는 계층
    • ex) HTTP, FTP, DNS
  • Presentation(표현) 계층 : 데이터 압축, 변환이 이뤄지는 계층
    • ex) JPEG, MPEG
  • Session(세션) 계층 : 데이터가 통신하기 위한 논리적 연결을 담당하는 계층
    • ex) API, Socket
  • Transport(전송) 계층 : 종단 간의 사용자들에게 신뢰성 있는 데이터를 전달하는 계층
    • 흐름 제어 : 송신측과 수신측 사이의 데이터 처리 속도 차이를 제어
    • 혼잡 제어 : 네트워크 혼잡을 피하기 위해 데이터의 전송 속도 제어
    • 오류 제어 : 오류 검출과 재전송
  • Network(네트워크) 계층 : IP를 지정하고 라우터로 경로를 선택해 네트워크를 통해 패킷을 전달하는 계층
  • Data Link(데이터링크) 계층 : 신뢰성 있는 전송을 보장하기 위한 계층
    • 오류 제어, 흐름 제어, 회선 제어
  • Physical(물리) 계층 : 전기적, 물리적 세부 사항을 정의하는 계층

전송계층은 논리적으로 1:1 연결된 송신과 수신 호스트 즉, 종단간의 호스트에 신뢰성 관련 기능을 제공하고, 데이터 링크 계층은 물리적으로 1:1 연결된 호스트 사이의 전송 즉, 직접 묶여있는 호스트-노드 또는 노드-노드 사이에서의 신뢰성 관련 기능을 제공한다.

계층을 나눈 이유 : 통신이 일어나는 과정을 단계별로 알 수 있고, 문제가 생기면 그 단계만 수정하면 된다.

 

 

 

 

생각해봤던 질문

더보기

1. osi 7계층에 대해 설명해주세요
OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다.

2. osi7계층은 국제표준기구 iso가 발표한 네트워크 모델이다. 왜 발표했을까?
표준 규격을 정하면, 동일한 규격을 갖게 해 원활한 통신이 가능하기때문

3. 7계층은 왜 나눌까?
통신이 일어나는 과정을 단계별로 알 수 있고, 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문이다.

4. 물리 계층이 하는 역할은 무엇인가?
데이터를 전기적인 아날로그 신호로 변환하여 주고 받는다.

5. 데이터 링크 계층이 하는 역할은 무엇인가?
물리 계층을 통해 송수신되는 데이터의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 돕는다.

6. 데이터 링크 계층에서 오류를 검출하는 기법을 아는 대로 설명해 보시오
패리티 비트 검사, 해밍 부호 검사 등이 있다.

7. Mac 주소란 무엇인가?
Mac 주소란 컴퓨터 간 데이터를 전송하기 위해 있는 컴퓨터의 물리적 주소 또는 하드웨어 주소라고 한다.

8. 네트워크 계층이 하는 역할은 무엇인가?
각 호스트에 IP 주소를 부여하고, 라우팅 기술을 활용하여 데이터를 특정 목적지까지 가장 안전하고 빠르게 전달한다.

9. 호스트란 무엇인가?
네트워크에 연결 되어 있는 컴퓨터들을 호스트라고 부른다.

10. IP 주소는 무엇인가?
IP 주소는 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신하기 위해 사용하는 논리적 주소다.

11. 라우팅이 무엇인가?
네트워크 안에서 통신 데이터를 보낼 때 최적의 경로를 선택하는 과정이다.

12. 전송 계층이 하는 역할은 무엇인가?
포트를 열어서 응용 프로그램들이 통신할 수 있게 만든다.

13. 포트란 무엇인가?
하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야 하는 정수 값이다.

14. 세션 계층이 하는 역할은 무엇인가?
네트워크 상 양쪽 연결을 관리하고 연결을 지속 시켜 주는 계층이다. 주로, TCP/IP 세션을 만들고 유지하며, 세션이 종료되거나 전송이 중단될 시 복구하는 기능이 있다. 
더불어, 통신하는 사용자들을 동기화한다는 특징이 있다.

15. 표현 계층이 하는 역할은 무엇인가?
코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식 상 차이를 다루는 부담을 응용 계층으로부터 덜어 준다. MIME 인코딩이나 암호화 등의 동작을 수행한다.

16. 응용 계층이 하는 역할은 무엇인가?
사용자 또는 애플리케이션이 네트워크 접근할 수 있도록 해 준다. 사용자를 위한 인터페이스를 제공하며, 사용자에게 보이는 유일한 계층이라고 할 수 있다. 메일 전송, 인터넷 접속 등의 작업을 수행할 수 있다.

17. 응용 계층에서 사용되는 프로토콜을 아는 대로 설명하라.
HTTP, FTP, SMTP, POP3, IMAP, Telnet, DNS 등과 같은 프로토콜이 있다.

18. Transport Layer와, Network Layer의 차이에 대해 설명해 주세요.
Transport-layer은 서로 다른 호스트에서 실행 중인 프로세스들 간의 논리적통신을 제공하는 반면, network-layer은 호스트간의 논리적통신을 제공한다.
transport-layer가 제공할 수 있는 서비스는 하위의 network-layer의 서비스 모델에 의해 제약을 받는다. 
만약, network-layer이 호스트사이에서 전송되는 transport-layer segments에 대한 지연 보장이나 대역폭 보장을 해줄 수 없다면, 
transport-layer은 프로세스 사이의 메시지에 대한 지연 보장이나 대역폭 보장을 제공할 수 없다.

19. 데이터 링크 레이어와 네트워크 레이어의 차이점?
네트워크 계층은 서로 다른 두 네트워크간의 전송을 담당한다면, 데이터 링크 계층은 동일한 네트워크 내에서 전송을 담당

20. 데이터 링크 레이어와 트렌스포트 레이어 모두 오류제어기능을 제공한다. 두 오류제어 기능의 차이는?
데이터 링크 계층에서는 오류가 난 프레임을 버려버리는 방식이지만, 트랜스포트계층의 오류제어는 오류가 생기면 재발송함으로써 오류복구까지 해준다.

21. L3 Switch와 Router의 차이에 대해 설명해 주세요.
L2스위치는 통신하고 싶은 상대가 어떤 포트에 연결되어있는지 기억한 후 패킨을 전송하며 맥어드레스에 의해 관리됨. 하지만 L3스위치는 IP어드레스를 이용한 라우팅
라우터 또한 서로 다른 네트워크를 접속하는 기능을 가지고 있음. 
L3스위치는 이더넷의 포트가 많고 라우팅을 하드웨어로 처리하며 고속으로 처리 가능하다.
라우터는 이더넷 이외의 회선에 대응하는 것이 많으며 라우팅을 소프트웨어로 처리한다. 여러가지 프로토콜에 대응 가능하다.

22. DNS란?
도메인주소를 IP주소로 변환하는 행위

23. TCP vs UDP
tcp는 연결 지향형 프로토콜이고 udp는 데이터를 데이터 그램 단위로 전송하는 프로토콜이다. 
tcp는 가상 회선을 만들어 신뢰성을 보장하도록하는 프로토콜이다. 따로 신뢰성을 보장하기 위한 절차가 없는 udp에 비해 속도가 느린편이다. 그래서 tcp는 파일전송과 같은 신뢰성이 중요한 서비스에 사용되고 
udp는 스트리밍과 같이 연속성이 더 중요한 서비스에 사용된다. (+upd도 신뢰성을 udp자체에서 보장하지 않을 뿐, 개발자가 직접 설정가능)

24. 세션이란?
세션이란 일정 시간 동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지하는 기술을 말한다. 
여기서 일정 시간이란, 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점으로부터 웹 브라우저는 종료함으로써 연결을 끝내기 까지의 기간을 말한다. 
즉, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 세션이라고 부른다.

25. 각 Layer는 패킷을 어떻게 명칭하나요? 예를 들어, Transport Layer의 경우 Segment라 부릅니다.
물리계층 - 0과1의 비트열
데이터링크 계층 - 프레임
네트워크 계층 - 패킷
전송계층 - 세그먼트

26. IP 주소와 MAC 주소의 차이에 대해 설명해 주세요.
MAC 주소는 IP주소와 마찬가지로 네트워크 통신에서 통신기기의 식별번호를 나타내는 것이다. 
IP주소와의 차이점은, IP주소는 임시적으로 다른 주체에 의해 할당 되는 것이지만, 
MAC 주소는 통신기기의 하드웨어 자체에 부여된 고유한 식별번호를 나타낸다. (유니크함)
이 IP주소는 통신기기마다 고유하게 할당되어 있는 것이 아니라, 대부분 통신사에 일정 금액을 지불하고 받아오는 것이기 때문에 경우에 따라 바뀔 수 있다. 

27. ARP란?(주소 결정 프로토콜)
논리적인 주소 (IP Address)를 물리적인 주소 (MAC Address)로 변환하는 작업

 

 

 

 

 

참고

https://www.youtube.com/watch?v=v30ilCpITnY - 시스템콜

https://www.youtube.com/watch?v=Fl_PSiIwtEo&t=357s - OSI 7 계층

 

 

 

 

 

 

 

 

 

'백엔드 > Computer Science(CS)' 카테고리의 다른 글

[스터디] 운영체제 #6  (0) 2023.02.12
[스터디] 운영체제 #5  (0) 2023.02.03
[스터디] 운영체제 #4  (0) 2023.01.27
[스터디]운영체제 #2  (0) 2023.01.13
[스터디]운영체제 #1  (0) 2023.01.06