쓰레드란 프로그램(프로세스) 실행의 단위이며
하나의 프로세스는 여러개의 쓰레드로 구성이 가능하다.
하나의 프로세스를 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다.
프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 가지며
실행 상태가 변할때마다 쓰레드 문맥교환(context switching)을 수행한다.
각 쓰레드별로 자신만의 스택과 레지스터를 가진다.
컴퓨터 프로그래밍의 패러다임 중 하나인 절차지향(C)언어에서는 각 명령어의 실행 순서를 기반으로 동작한다.
하지만 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 데이터와 이를 처리하는 루틴들을
하나의 독립된 객체로 동작한다.
이를 통해 재사용성의 증가라는 이점이 생기며 큰 프로젝트에 많이 사용된다.
하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고
자원의 생성과 관리의 중복성을 최소화하여
수행 능력을 향상시키는 것을 멀티쓰레딩이라고 한다.
하나의 프로그램에 동시에 여러개의 일을 수행할수 있도록 해주는 것이다.
소프트웨어(S/W, SoftWare)는 하드웨어를 동작시켜 사용자가 작업을 편리하게 수행하도록 하는 프로그램과 자료 구조 등을 총칭한다.
소프트웨어는 프로그램 자체뿐만 아니라 프로그램의 개발, 운용 및 유지보수에 관련된 모든 문서와 정보를 포함한다.