操作系统(十一)线程的概念和特点
2.1.5 線程的概念和特點(diǎn)
? 前面我們介紹了進(jìn)程,并說到進(jìn)程是程序的一次執(zhí)行,是調(diào)度的基本單位。那么大家來想一下這么一個場景,我打開了QQ.exe,QQ進(jìn)程便會運(yùn)行,在這次運(yùn)行里我想跟同學(xué)視頻聊天、共享文件、文字聊天,那么這三個功能對應(yīng)的程序便會運(yùn)行即QQ進(jìn)程下會多出三個子進(jìn)程,那么這個三個子進(jìn)程都會被分配一定的資源,如果其中兩個進(jìn)程所需要的資源是重復(fù)的,一個進(jìn)程要訪問另一進(jìn)程的資源就需要進(jìn)程切換,這個時候就要進(jìn)行一系列的操作,十分耗費(fèi)時間以及資源,該如何解決這個問題呢?我們引入了線程的概念。
目錄
2.1.5 線程的概念和特點(diǎn)
2.1.5.1 線程的概念
2.1.5.2 線程的特點(diǎn)
2.1.5.3 引入線程后所帶來的變化
2.1.5.1 線程的概念
? 線程(threads)是一個比進(jìn)程更小的單位,他的引入是為了減少程序在并發(fā)執(zhí)行時所付出的時空開銷,使 OS 具有更好的并發(fā)性。在引入線程這個概念后,資源分配仍是以進(jìn)程為單位的而進(jìn)程調(diào)度則是以線程為基本單位的。??
? ? ? ? ? ?
2.1.5.2 線程的特點(diǎn)
(1)引入線程后,進(jìn)程是資源分配的基本單位,線程是調(diào)度的基本單位,線程幾乎不擁有資源,只擁有極少量的資源。線程也有運(yùn)行態(tài)、就緒態(tài)、阻塞態(tài).
? (2)? ?同一進(jìn)程下的各個線程間共享內(nèi)存地址空間,可以直接通過讀/寫內(nèi)存空間.
2.1.5.3 引入線程后所帶來的變化
(1) 調(diào)度:在傳統(tǒng)的操作系統(tǒng)中,作為擁有資源的基本單位和獨(dú)立調(diào)度、分派的基本單位都是進(jìn)程。而在引入線程的操作系統(tǒng)中,則把線程作為調(diào)度和分派的基本單位,從而可顯著地提高系統(tǒng)的并發(fā)程度。在同一進(jìn)程中,線程的切換不會引起進(jìn)程的切換,但從一個進(jìn)程中的線程切換到另一個進(jìn)程中的線程時,將會引起進(jìn)程的切換。
(2) 并發(fā)性:在引入線程的操作系統(tǒng)中,不僅進(jìn)程之間可以并發(fā)執(zhí)行,而且在一個進(jìn)程中的多個線程之間亦可并發(fā)執(zhí)行.
(3) 擁有資源:不論是傳統(tǒng)的操作系統(tǒng),還是引入了線程的操作系統(tǒng),進(jìn)程都可以擁有資源,是系統(tǒng)中擁有資源的一個基本單位。一般而言,線程自己不擁有系統(tǒng)資源(也有一點(diǎn)必不可少的資源),但它可以訪問其隸屬進(jìn)程的資源,即一個進(jìn)程的代碼段、數(shù)據(jù)段及所擁有的系統(tǒng)資源,如已打開的文件、I/O 設(shè)備等,可以供該進(jìn)程中的所有線程所共享。 (4) 系統(tǒng)開銷:在進(jìn)程切換時,涉及到當(dāng)前進(jìn)程 CPU 環(huán)境的保存及新被調(diào)度運(yùn)行進(jìn)程的 CPU 環(huán)境的設(shè)置,而線程的切換則僅需保存和設(shè)置少量寄存器內(nèi)容,不涉及存儲器管理方面的操作,所以就切換代價而言,進(jìn)程也是遠(yuǎn)高于線程的。此外,由于一個進(jìn)程中的多個線程具有相同的地址空間,在同步和通信的實(shí)現(xiàn)方面線程也比進(jìn)程容易。總結(jié)
以上是生活随笔為你收集整理的操作系统(十一)线程的概念和特点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里对吃货下手了
- 下一篇: 操作系统(十二)线程的实现方式、多线程模