시스템 콜(System Call)
Last updated
Last updated
프로세스(유저모드)가 운영체제(커널모드)의 기능을 요청하는 것
기본적으로 프로세스들간의 호출도 제한되어 있어 프로세스간 통신을 활용하는 것처럼 프로세스가 커널 내부의 함수를 호출하려면 시스템콜을 활용
유저모드에서 실행되는 프로세스가 커널모드에 대한 접근이 필요할 때, 시스템콜이 커널에 요청해서 커널모드에서 처리하고 그 결과를 유저모드로 전달
여러 종류의 시스템콜이 있고 각각 번호가 할당되어 시스템콜테이블로 유지
프로세스가 하드웨어에 접근하여 필요한 기능을 사용하게 함
레지스터를 통한 주소 전달
레지스터에 저장하여 전달
CPU 내 레지스터의 개수보다 파라미터가 많아지면 메모리에 저장하고 메모리 주소를 전달
스택
매개변수의 개수나 길이에 제한이 없음
동기식
입출력을 시작시키고 끝날 때까지 대기
그동안 다른 프로세스가 CPU 사용
대부분의 시스템콜이 동기식 호츌
비동기식
입출력을 시작시키고 바로 다음 라인 수행
입출력 동안에도 CPU 사용
입출력 종료를 알려주는 방법 필요
프로세스 제어
파일 조작
장치 조작
정보 관리
통신
보호
fork() 실행 시 동일한 프로세스를 하나 생성
부모 프로세스와 자식 프로세스의 차이는 fork()의 리턴값(부모는 자식 프로세스의 pid값, 자식은 0)
fork() 이후 부모와 자식의 실행 순서는 보장되지 않음
프로세스의 종료를 기다림으로 실행 순서를 제어 가능하게 함
프로세스의 코드 내용을 지정된 파일의 내용으로 덮어씀
exec() 이후 기존의 코드 내용 대신 새로운 내용 실행
fork는 새로운 프로세스를 만들어도 반복 작업만 가능하지만 exec 사용함으로써 다양한 작업을 가능하게 함