프로세스 프로세스의 개념 프로그램과 프로세스는 분명한 차이가 있다. 프로세스는 실행 중인 프로그램을 의미하며, 이는 곧 메모리에 올라가 있는 프로그램을 의미한다. 프로세스는 자신의 작업을 하기 위해 CPU time이나 메모리, 입출력 장치 등의 리소스를 필요로 하는데 운영체제는 이러한 리소스를 잘 관리할 수 있어야 한다. 이러한 프로세스들을 자세히 살펴보려면 메모리에서 프로세스가 어떻게 구성되어 있는지 살펴보는 것이 중요하다. 크게 보면 아래 그림과 같이 나타낼 수 있다. 하나 씩 살펴보면 코드 영역(텍스트 영역)은 코드가 저장되는 부분으로 CPU는 코드 영역에서 명령어를 가져가 수행한다. 데이터 영역은 전역 변수나 정적 변수가 저장되는 영역이다(전역 변수와 정적 변수의 차이도 생각해보면 좋겠다). 스택..
운영체제란? 운영체제를 간단히 말하면 "컴퓨터"를 운영하는 소프트웨어라고 할 수 있다. 그렇다면 컴퓨터의 정의를 명확히 하는 것이 중요할텐데, 많은 정의가 있을 수 있겠지만 가장 쉽게 생각할 수 있는 정의는 범용성과 계산가능성을 모두 충족한 기계라고 할 수 있다. 각각 쉽게 설명한다면 S/W가 하고자 하는 모든 것들을 H/W가 지원할 수 있고(범용성), 튜링 머신으로 계산가능한(계산가능성) 기계라고 할 수 있겠다. 여기서 튜링 머신으로 계산가능하다는 것은 너무 어려우니 그냥 튜링이 정의한 컴퓨터의 지표 정도로 생각하면 될 것 같다. 이 정의 때문에 소프트웨어(앱)를 깔아서 카메라, 영화, 게임 등의 다양한 기계로 사용할 수 있는 스마트폰은 컴퓨터이지만, 기존의 소프트웨어를 그대로 사용할 수 밖에 없는 계..