Spring

chapter1-spring(시스템콜, 프로세스와 스레드, OSI 7계층과 TCP/IP 4계층 모델,

팅탱팅탱 2024. 3. 5. 15:32

system call:

운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다.

사용자 프로그램이 디스크 파일을 접근하거나 화면에 결과를 출력하는 등의 작업이 필요한 경우, 즉 사용자 프로그램이 특권 명령의 수행을 필요로 하는 경우, 운영체제에게 특권 명령의 대행을 요청하는 것.

 

경우에 따라 시스템 콜이 발생했을 때, 추가적인 정보가 필요할 수도 있는데 그러한 정보가 담긴 매개변수들을 OS 에 어떻게 전달할까?

매개변수를 CPU 레지스터에 전달한다.
- 전달해야 하는 매개변수 보다 레시스터의 수가 작을 수 있다.
매개변수를 메모리에 저장해 해당 메모리의 주소를 레지스터에 전달 할 수 있다.
매개변수는 프로그램에 의해 스택(stack)에 전달(push) 될 수도 있다.
- 2,3 번의 경우 매개변수의 갯수나 길이의 제한이 없기 때문에 선호되는 방식이다.

 

 

시스템 콜 예시

cp in.txt out.txt

먼저 사용자로부터 입력을 받는데 이때 I/O 시스템 콜 호출이 필요하다.
이후 'cp' 프로그램을 실행시키면 먼저 'in.txt' 파일이 현재 디렉토리에서 접근 가능한지를 확인하기 위한 시스템 콜이 호출된다.
이때 접근이 불가능하다면 에러를 발생시킨 후 프로그램이 종료되는데 이때 시스템 콜이 호출된다.
파일이 존재해 접근 가능하다면 복사한 파일을 저장하기 위해 'output.txt' 파일명이 있는지 검사하기 위한 시스템 콜이 호출된다.
이 때도 마찬가지로 이 파일 명이 존재하는지 존재하지 않는지 검사하기 위해 시스템 콜을 통해 확인한다.
만약 파일 명이 이미 존재한다면, 덮어 씌워야 할지 아니면, 이어서 붙여야 하는지 User에게 물어볼 수 있는데 만약 저장하고자 하는 파일 이름이 겹치지 않다면, 파일을 저장해야 하는데 이 때도 시스템 콜을 이용한다.

 

 

프로세스와 스레드

프로세스: 운영체제로부터 할당 받은 작업의 단위

스레드: 프로세스가 할당받은 자원을 이용하는 **실행 흐름의 단위

 

 

OSI 7계층과 TCP/IP 4계층 모델