병행성은 어느 수준에서 구현되나요?

rlj1202의 이미지

싱글 코어에서 시간을 잘게 쪼개서 여러가지 일들이 동시에 진행되는 것 처럼 보이게 하는 방법이 병행성이죠. 개념은 정말 간단한데 이것이 어떻게 실제로 구현되는건가요?

일단 프로그래밍 언어 수준에서는 가상엔진을 만들어서 직접 가상의 바이트 코드를 돌리지 않는이상 병행성을 흉내낼 수 없어 보입니다. 가상엔진이 아니라면 코드 한줄 쓰고 goto로 다른 문장을 실행하고 또 한줄쓰고 goto하고 이런식 말고는 다른 방법이 생각나지 않습니다. 그렇다면 어셈블리 언어로 구현이 되는가? 결국 이것도 프로그래밍 언어니까 더 밑의 단계, 운영체제가 있을 것인데 운영체제 또한 소프트웨어 아닙니까? 그렇다면 하드웨어, CPU단계에서 처리되는건가요? CPU를 설계할 때 부터 병행성을 고려한 명령어를 삽입하게 되는건가요?

추신 : 아두이노에서 쓰레드를 쓸 수 없어 짜증이 나서 생각해 보게 되었습니다. 왜 이런건 사용할 수 없는지...!