시스템을 사용하기 편리하게 관리해주는 소프트웨어
운영체제가 프로세서, 메모리, 디스크와 같은 물리적 자원의 접근을 위해 위의 자원들을 이용한 가상 형태의 자원을 생성
이를 다른 프로그램들이 사용할 수 있도록 운영체제는 API를 제공한다
= 수백개의 시스템콜
여러 프로그램이 동시에 공유하면서 실행되게 해줌 (resource manager)
여러 프로그램이 동시에 실행가능하게 해줌
(마치 여러개의 CPU가 존재하는 것 처럼)
각 프로세스마다 자신만의 가상 주소 공간을 가지게 된다
병행성 예시)
만약 100000번 1을 loop로 더하는 프로그램을 멀티 쓰레드로 두번 돌리게 되면 결과값이 200000이 나오지 않음,,
-> 명령어가 한번에 하나씩 실행되는데 ++1을 하는 과정에서 명령어가 총 3번 실행되기 때문에 발생하는 문제