사실은 여러가지 일을 동시에 처리할 수 없다. 컴퓨터는 한 순간에 하나의 작업 (혹은 프로세스)만을 수행할 수 있다. 하지만 컴퓨터는 작업을 매우 빠르게 전환할 수 있고, 이것을 인식할 수 없는 사람에게는 여러가지 작업이 동시에 이루어지는 것처럼 생각하게 만든다. 이것을 시간분할(timesharing)이라 부른다.
커널의 임무 가운데 하나는 시간분할을 관리하는 것이다. 커널은 이외의 모든 프로세스의 정보를 담고 있는 스케쥴러(scheduler)를 가진다. 60분의 1초마다 타이머는 커널에서 시간 인터럽트(clock interrupt)를 발생시키고, 스케줄러는 현재 작업중인 프로세스를 일시 중지시킨 다음에 다른 프로세스를 조정하게 된다.
60분의 1초라는 시간이 매우 큰 시간처럼 들리지는 않을 것이다. 하지만 오늘날의 마이크로프로세서에게는 이것은 수만개의 명령을 실행시키기에 충분한 시간이다. 따라서 당신이 많은 프로세스를 수행하고 있다고 하더라도 각 프로세스는 자신에게 할당된 시간조각(timeslices) 안에서 성공적으로 수행을 마칠 수 있다.
사실 프로그램은 시간조각(timeslice) 전체를 사용할 수는 없다. 만약 인터럽트가 I/O 장치에서 들어온다면, 커널은 현재 작업을 효과적으로 중지시키고, 인터럽트 핸들러를 실행시킨다. 그 후에 현재 작업으로 되돌아가게 된다. 높은 우선순위를 가지는 인터럽트가 많이 발생하게 되면 정상적인 프로세스를 밀어내게 되는데, 이런 비정상적인 행동을 thrashing이라 한다. 이것은 현대 유닉스 시스템에서는 일어나기 매우 힘든 행동이다.
실제로 프로그램의 실행 속도는 그 프로그램이 가질 수 있는 기계적인 시간의 양에 제약을 받는 일은 거의 없다. (3차원 그래픽과 사운드같은 경우는 이 규칙의 몇가지 예외에 해당한다.) 프로그램이 늦어지는 일은 디스크 드라이브나 네트워크 연결에서 데이터를 받기위해 프로그램이 기다리는 일 때문이 훨씬 자주 일어난다.
운영체계가 일상적으로 동시에 여러가지 프로세스가 수행할 수 있게 지원하는 경우를 "멀티테스킹(multitasking)"이라 한다. 유닉스 계열의 운영체계는 근본적으로 멀티테스킹이 가능하게 설계되었으며, 멀티테스킹을 훌륭하게 수행한다. -- 윈도나 맥 OS보다 유닉스 계열이 훨씬 효과적으로 멀티테스킹을 수행하는데, 이런 운영체계는 멀티테스킹 기능을 후에 추가하였기 때문에 별로 좋은 성능을 내지 못한다. 효과적이고 믿음직한 멀티테스킹은 리눅스가 네트워킹이나 통신, 웹서비스에서 좋은 성능을 발휘할 수 있는 이유 가운데 상당히 큰 비중을 차지하고 있다.