lOMoARcPSD| 61552889
Chào các bn !
Đến nay thì chúng ta đã hc xong chương 1,2,3,4 và chun b bước vào đt thi gia
kỳ ri. Vy thì, chúng mình cùng ôn tp li mt s kiến thc, đ nh bài hơn thi
tt hơn nhé ^^ !
Ôn tập chương 1 :
Câu 1 : Đnh nghĩa h điu hành?
- H điu hành là chương trình trung gian gia phn cng máy tính người s
dng, chc năng điu khin phi hp vic s dng phn cng cung cp các
dch v cơ bn cho các ng dng.
Câu 2 : Cu trúc h thng máy tính gm nhng phn nào?
- Phn cng (hardware): Bao gm các tài nguyên phn cng ca máy tính như CPU,
b nh, các thiết b I/O. Ví d: Chut, bàn phím, màn hình, …
- H điu hành (operating system): Phân phi tài nguyên, điu khin phi hp
các hot đng ca các chương trình trong h thng. Ví d mt s loi HĐH: MS
DOS, Linux, Window
- Chương trình ng dng (application programs): S dng h thng tài nguyên đ
gii quyết mt bài toán tính toán nào đó ca người s dng. Ví d: game
- Users (people, machines, other computers)
Câu 3 : H điu hành có nhng chc năng gì?
- Phân chia thi gian x lý và đnh thi CPU.
- Phi hp đng b hot đng gia các processes (coordination &
synchronization).
- Qun lý tài nguyên h thng (thiết b I/O, b nh, file cha d liu,…).
- Thc hin và kim soát access control, protection.
- Duy ts nht quán (integrity) ca h thng, kim soát li phc hi h thng
khi có li (error recovery).
- Cung cp giao din làm vic cho users.
Câu 4 : Dưới góc đ hình thc x lý, h điu hành chia thành nhng loi nào? Trong
mi loi có nhng yêu cu gì vi h điu hành?
- H thng xtheo lô
lOMoARcPSD| 61552889
+ H thng đơn chương (uniprograming OS):
Tác v được thi hành tun t.
Yêu cầu:
o B giám sát thường trc o CPU và các
thao tác nhập xuất:
X lý offline
Đng b hóa các thao tác bên ngoài Spooling (Simultaneous Peripheral
Operation On Line)
+ H thng đa chương (multiprogramming OS):
Nhiu công vic được np đng thi vào b nh chính, tn dng được thi gian rnh
ca các tiến trình đang trong giai đon ch thc thi.
Yêu cầu:
o Đnh thi công vic (job scheduling): chn job trong job pool trên đĩa np vào
b nh đ thc thi.
o Qun lý b nh (memory management).
o Đnh thi CPU (CPU scheduling). o Cp phát tài nguyên (đĩa, máy in,…).
o Bo v.
+ H thng chia s thi gian:
h thng đa nhim, lp lch cho c tiến trình thc thi trên
CPU.
Yêu cầu: o Đnh thi công vic (job scheduling). o Quản lý bộ nh
(memory management).
Virtual memory o Quản lý các quá trình (process management)
Đnh thi CPU
Đng b các quá trình (synchronization)
Giao tiếp gia các quá trình (process communication)
Tránh deadlock
lOMoARcPSD| 61552889
o Qun lý h thng file, h thng lưu tr. o Cp phát hp lý các
tài nguyên.
o Bo v (protection).
+H thng song song:
Nhiu CPU, chia s computer bus, clock Ưu điểm: o Năng sut:
càng nhiu CPU thì càng x công vic nhanh. o Multiprocessor system ít
tn kém hơn multiple single-processor system.
o Đ tin cy: khi mt processor hng thì công vic ca được chia s gia các
processor còn li.
Phân loi: Đa x lý đi xng và đa x lý bt đi xng.
+ H thng phân tán:
Mi processor b nh riêng, giao tiếp vi nhau qua các kênh ni như mng, bus
tc đ cao nhưng người dùng ch thy mt h thng đơn nht.
Ưu điểm:
o Chia s tài nguyên (resource sharing) o Chia s sc mnh tính toán (computational
sharing) o Đ tin cy cao (high reliability) o Đ sn sàng cao (high availability): các
dch v ca h thng được cung cp liên tc cho mt thành phn hardware tr nên
hng.
Các mô hình h thng song song: client-sever và peer-to-peer +H thng x lý thi
gian thc:
S dng trong các thiết b chuyên dng như điu khin các th nghim khoa hc,
điu khin trong y khoa, dây chuyn công nghip, thiết b gia dng, quân s.
Ràng buộc về thời gian: hard và so real-me.
o Hard real-me.
Hn chế (hoc không có) b nh ph, tt c d liu nm trong b nh chính (RAM
hoc ROM).
Yêu cu v thi gian đáp ng/x rt nghiêm ngt, thường s dng trong điu khin
công nghip, robotics,…
lOMoARcPSD| 61552889
o Soft real-time: Thường được dùng trong lĩnh vc multimedia, virtual reality vi yêu
cu mm do hơn v thi gian đáp ng.
Câu 5 : Dưới góc đ loi máy tính, h điu hành chia thành nhng loi nào?
- H điu hành dành cho máy MainFrame.
- H điu hành dành cho máy Server.
- H điu hành dành cho máy nhiu CPU.
- H điu hành dành cho máy tính cá nhân (PC).
- H điu hành dành cho máy PDA (Embedded OS - h điu hành nhúng).
- H điu hành dành cho máy chuyên bit.
- H điu hành dành cho th chíp (SmartCard).
Câu 6 : Nêu lch s phát trin ca HĐH:
- Thế h 1 (1945 - 1955)
Thiết kế, xây dng, lp trình, thao tác: do 1 nhóm người.
Lưu trên phiếu đc l.
- Thế h 2 (1955 - 1965)
Xut hin s phân công công vic
H thng s theo lô ra đi, lưu trên băng t.
Hot đng dưới s điu khin đc bit ca 1 chương trình .
Chưa xut hin h điu hành.
- Thế h 3 (1965 - 1980)
Ra đi h điu hành, khái nim đa chương.
HĐH chia s thi gian như CTSS ca MIT.
MULTICS, UNIX.
- Thế h 4 (1980)
Ra đi máy tính cá nhân, IBM PC.
HĐH MS-DOS, MacOS (Apple Macintosh), HĐH mng,… Câu 7 : Nhng yêu cu
ca h thng chia s thi gian ?
lOMoARcPSD| 61552889
- Yêu cu:
Đnh thi công vic (job scheduling).
Quản lý bộ nhớ (memory management).
o Virtual memory.
Qun lý các quá trình (process management).
Đnh thi CPU.
Đng b các quá trình (synchronization).
Giao ếp giữa các quá trình (process communicaon). o Tránh deadlock.
Qun lý h thng file, h thng lưu tr
Cp phát hp lý các tài nguyên Bo v (protection).
Câu 8 : Đc đim ca h thng đa chương?
- Nhiu công vic được np đng thi vào b nh chính
- Khi mt tiến trình thc hin I/O, mt tiến trình khác th được thc thi - Tn
dng được thi gian rnh, tăng hiu sut s dng CPU (CPU utilization) Ôn tập
chương 2 :
Câu 1 : H điu hành bao gm nhng thành phn nào? C th tng thành phn?
- Qun lý tiến trình
- Qun lý b nh chính
- Qun lý file
- Qun lý h thng I/O
- Qun lý h thng lưu tr th cp
- H thng bo v
- H thng thông dch lnh
Câu 2 : Các cơ chế trao đi thông tin gia các tiến trình?
- Vùng nh chia s
- Chuyn thông đip
lOMoARcPSD| 61552889
- Dùng tín hiu *
- Pipe *
* Hai cách này không có trong slide
Câu 3 : Cu trúc h thng gm nhng loi nào? Cho ví d tng loi (theo sách tham
kho)
- Cu trúc đơn gin: MS-DOS
- Cu trúc phc tp hơn: UNIX
- Cu trúc phân tng: THE
- Cu trúc vi nhân: QNX, WindowNT, POSIX, …
Câu 4 : Chương trình h thng gm nhng phn nào?
- Qun lý h thng file: như create, delete, rename, list
- Thông tin trng thái: như date, time, dung lượng b nh trng
- Son tho file: như file editor
- H tr ngôn ng lp trình: như compiler, assembler, interpreter
- Np, thc thi, giúp tìm li chương trình: như loader, debugger
- Giao tiếp: như email, talk, web browser
Câu 5 : Li gi h thng là gì và dùng đ làm gì?
- Li gi h thng vic mt chương trình máy tính yêu cu mt dch v t nhân
ca h điu hành mà nó được thc thi.
- Tác dng:
Dùng đ giao tiếp gia tiến trình và h điu hành Cung cp giao din gia tiến
trình và h điu hành
Câu 6 : H điu hành cung cp nhng dch v nào?
- Thc thi chương trình
- Thc hin các thao tác I/O theo yêu cu ca chương trình
- Các thao tác trên h thng file
- Trao đi thông tin gia các tiến trình qua hai cách:
lOMoARcPSD| 61552889
Chia s b nh (Shared memory)
Chuyn thông đip (Message passing)
- Phát hin li
- Ngoài ra còn các dch v giúp tăng hiu sut ca h thng:
Cấp phát tài nguyên (resource allocaon):
o CPU, b nh chính, đĩa,o
OS có các routine tương ng.
+ Kế toán (accounting): Nhm lưu vết user đ tính phí hoc đơn gin đ thng kê.
+ Bo v (protection)
Hai tiến trình khác nhau không được nh hưởng nhau Kim soát được các
truy xut tài nguyên ca h thng
+ An ninh (security): Ch các user được phép s dng h thng mi truy cp được
tài nguyên ca h thng (vd: thông qua username password) Câu 7 : Các khái
nim liên quan đến máy o?
- Máy o là phn mm to ra môi trường gia h nên máy tính và người dùng, người
dùng có th thc thi phn mm trên máy o
- Ví d: Virtual Box, Parallels
Ôn tập chương 3 :
Câu 1 : Mt tiến trình cha nhng thành phn gì ?
Mt chương trình (program) s tr thành tiến trình (process) ch khi được np
lên b nh (memory) ca máy tính (hay nói cách khác – được thc thi).
Mt tiến trình bao gm :
Trong b nh (memory) :
Text Secon (Program code) : Cha nhng đon chương trình đã được biên dch
bi compiler.
Data Secon (khu vực dữ liệu) : Cha các biến toàn cc (global variables) và các biến
tĩnh (static variables) được khi to trước khi hàm main được gi.
Heap : Dùng đ lưu tr các b nh được cp phát đng (như vic gi new, delete,
malloc, calloc, free,…).
lOMoARcPSD| 61552889
Stack : Dùng đ lưu tr các biến cc b (local variables). VD như lúc bn khai báo
trong C : int i = 0. Thì biến i s được lưu trong b nh Stack ca Process.
Một ến trình trong bộ nhớ.
Ngoài ra, trong process còn có :
Program Counter (PC).
Process status word (PSW).
Stack pointer (SP).
Memory management registers.
Câu 2 : Tiến trình có nhng trng thái nào ? Cách tiến trình chuyn trng thái ?
Tiến trình có các trng thái sau :
new : Tiến trình va được to.
ready :Tiến trình đã có đ tài nguyên, đang ch được cp CPU đ chy.
running :Các lnh ca tiến trình đang được thc thi.
waing (hay blocked) : Tiến trình đi I/O hoàn tt.
terminated : Tiến trình đã kết thúc (đã thc thi xong).
lOMoARcPSD| 61552889
Cách tiến trình chuyn trng thái :
Đu tiên, khi va khi to, tiến trình s trng thái là new.
Thông qua b đnh thi dài hn Long-term scheduling (hay còn gi b đnh thi
công vic Job Scheduler), tiến trình ca chúng ta t new s được sp xếp v trí đ
“chui” vào trong hàng đi ready.
mt s h điu hành có thêm b đnh thi Medium-term Scheduler.
Thông qua b đnh thi này, các tiến trình s được swap-out (chuyn tiến trình t
b nh chính sang b nh ph) và swap-in (chuyn tiến trình t b nh ph vào b
nh). VD : Paging trong HĐH Windows, hoc Swap trong Linux.
Thông qua b đnh thi Short-term Scheduling (hay còn được gi Dispatcher), t
trng thái ready tiến trình s được sp xếp đ chuyn qua trng thái running(là trng
thái chy – hay trng thái s dng CPU – ca tiến trình).
Trong khi đang trng thái running, có 3 trng thái tiếp theo tiến trình th
đt được tiếp theo :
waing : Khi tiến trình đang ch I/O (VD : Khi gi hàm print(), scanf() trong C).
ready :Khi tiến trình b interrupt (b ngt, không cho chy na) bi Shorerm
Scheduler. Các do ngt th là : Ngt thi gian (Clock Interrupt), Ngt ngoi vi
(I/O Interrupt), Li gi h thng (Operating System Call), Signal.
terminated : Khi ng dng thc thi xong : Khi gp lnh exit, khi thc thi lnh cui.
Trong khi trng thái waing, tiến trình s chuyn sang trng thái ready(vào hàng
đi ready) sau khi đã thc thi xong I/O.
Chuyển các trạng thái của ến trình.
lOMoARcPSD| 61552889
Tiến trình chuyển trạng thái bằng các bộ định thời khác nhau.
(Nói thêm : th >= 1 tiến trình trng thái ready và waing, tuy nhiên ch
duy nhất 1 tiến trình trng thái runningti mt thời điểm nhất đnhta đang xét).
Câu 3 : Ti sao phi cng tác gia các tiến trình ?
Trong tiến trình thc thi, các tiến trình th cng tác (cooperate) đ hoàn thành
các công vic.
Các tiến trình cng tác vi nhau đ :
Chia s d liu (information sharing).
Tăng tốc độ nh toán (computaonal speedup). o Các mng lưới máy tính s
hp vi nhau đ to thành các cluster.
o Nếu h thng có nhiu CPU, chia công vic tính toán thành nhiu công vic tính toán
nh chy song song.
Thực hiện một công việc chung.
o Xây dng mt phn mm phc tp bng cách chia thành các module/process hp tác
nhau.
Câu 4 : PCB là gì ? Cha nhng thông tin gì ? Dùng đ làm gì ?
lOMoARcPSD| 61552889
Mi tiến trình trong h thng đu được cp phát mt Process Control Block (PCB).
Là mt trong các cu trúc d liu quan trng nht ca h điu hành.
PCB cha các thông tin liên quan đến process như :
Trng thái tiến trình (Process State) : new, ready, running,
B đếm chương trình (Program Counter) : Ch đến đa ch ca lnh tiếp theo s được
thc thi cho tiến trình này.
Các thanh ghi CPU (CPU Registers) : Ph thuc vào kiến trúc máy tính. th k
đến vài loi như accumulators, index registers, stack pointers, general-purpose
registers, condition-code information.
Thông tin lp thi biu CPU (CPU Scheduling Information) : Đ ưu tiên, con tr
đến các hàng đi, và các tham s ca vic lp thi biu.
Thông tin qun lý b nh (Memory-Management Information) : Cha page tables,
segment tables, memory limits (gii hn b nh).
Thông tin trng thái I/O (I/O status information) : Cha danh sách các thiết b
I/O đã được cp phát cho tiến trình, danh sách các file tiến trình đang m,…
Các thông tin quan trng khác như : Lượng CPU, thi gian s dng,PID,…
Hình ảnh minh hoạ một Process Control Block.
Vy, các PCB đơn gin các kho d liu, trong đó cha các d liu khác nhau ca
nhiu process khác nhau.
Câu 5 : Tiu trình là gì ?
lOMoARcPSD| 61552889
Tiu trình : Là mt đơn v cơ bn s dng CPU, gm :
Thread ID.
PC (Program Counter).
Registers.
Stack.
Chia sẻ chung code, data, resources (le).
So sánh giữa đơn ến trình và đa ến trình.
Ôn tập chương 4.
Câu 1 : Ti sao phi đnh thi ? Nêu các b đnh thi và mô t v chúng ?
Mc tiêu ca vic lp trình đa lung hướng đến vic luôn luôn phi tiến trình
s dng CPU, hay nói cách khác, là ti đa hoá vic s dng CPU. Ngoài ra, mc tiêu
ca các h thng time sharing (chia s thi gian – tc các h thng HĐH hin nay)
vic mang đến cho người dùng cm giác chiếc máy tính ca mình có th làm được
nhiu công vic cùng mt lúc. Vic đó ch th đt được thông qua vic chuyn
quyn s dng CPU tht nhanh qua li gia các tiến trình.
lOMoARcPSD| 61552889
đ đt được các mc tiêu nêu trên, trình định thời (Scheduler) s la chn trong
các tiến trình hin có đ thc thi trên CPU. Nguyên nhân do, trong mt thi đim
nht đnh, ch duy nht có mt tiến trình được quyn trng thái running mà thôi.
Có 3 b đnh thi :
Short-Term Scheduling (hay còn gọi Dispatcher) : Dùng đđịnh thời cho CPU. o c
đnh process nào trong ready queue s được chiếm CPU đ thc thi kế tiếp.
o Bộ định thời Short-Term sẽ được gọi mỗi khi có một trong các skiện/interrupt sau xảy ra
:
Ngt thi gian (clock interrupt).
Ngt ngoi vi (I/O interrupt).
Li gi h thng (Operating System Call).
Signal.
Medium-Term Scheduling : Dùng đđịnh thời Swaping. o Process nào được đưa
vào (swap-in), đưa ra khi (swap-out) b nh chính.
o Được thc hin bi phn qun lý b nh và được tho lun phn qun lý b nh.
Long-Term Scheduling (hay còn gọi là Job Scheduler) : o Xác đnh chương trình
nào được chp nhn np vào h thng đ thc thi. o Điu khin mc đ
multiprogramming ca h thng.
o Long-Term Scheduling thường c gng duy trì xen ln CPU-Bound I/O Bound
Process.
Câu 2 : Các tiêu chun đnh thi CPU ?
Các thut toán đnh thi CPU khác nhau các tính cht khác nhau. vy, rt
nhiu tiêu chí đã được đ ra đ so sánh các thut toán đnh thi CPU. c tiêu chun
được lit kê như sau :
Mức độ sử dụng CPU (CPU Ulizaon) : Chúng ta mun gi làm sao
cho CPU càng bn ng tt. Theo thuyết thì CPU utilization th đt t 0 đến
100 phn trăm. Trong h thng thc tế, thông thường CPU Utilization s đt 40
phn trăm (cho h thng lúc ri), và th đt mc lên đến 90 phn trăm (cho lúc
h thng load nng).
lOMoARcPSD| 61552889
Thông ợng (Throughput) : Mt trong nhng thước đo cho hiu qu ca quá trình
làm vic đó chính là thông lượng. Thông lượng được tính bng s lượng tiến trình
đã được hoàn thành trong mt đơn v thi gian.
Thời gian hoàn thành (Turnaround me) : T góc nhìn ca mt tiến
trình nht đnh, mt yếu t quan trng cn xem xét đó chính khong thi gian
cn thiết đ thc thi tiến trình đó. Khong thi gian t lúc tiến trình được ghi nhn
đến khi hoàn thành chính là Turnaround Time. Vì vy, Turnaround Time
tng ca tt c các khong thi gian : Tiến trình trong hàng đi, thc thi trên CPU
và thc thi lnh I/O.
Thời gian đợi (Waing me) : Tng thi gian tiến trình đã trong hàng đi ready
queue.
Thời gian đáp ứng (Response Time) : Thi gian t lúc tiến trình xut hin cho đến khi
thc hin tiến trình đó ln đu tiên.
Câu 3 : Có bao nhiêu gii thut đnh thi ? K tên.
First-Come, First-Served (FCFS).
Shortest-Job-First Scheduling (SJF).
Preemptive SJF (hay Shortest-Remaining-Time First – SRTF).
Priority Scheduling.
Round-Robin (RR).
Highest Response Ratio Next (HRRN).
Multilevel Queue.
Multilevel Feedback Queue.
Câu 4 : Trong các hàng đi đnh thi, đnh thi nào có th preemptive ?
SJF có th Preemptive -> SRTF.
Priority Scheduling.
RR.
Mutilevel Queue (Tuỳ cách thiết lp).
Multilevel Feedback Queue.
Câu 5 : Trong các gii thut đnh thi, gii thut nào không xy ra starvation ?
lOMoARcPSD| 61552889
Starvation xy ra khi mt tiến trình đã trong hàng đi quá lâu, nhưng không được
cung cp CPU đ s dng.
Các gii thut s không xy ra starvation :
FCFS.
RR.
HRRN.
Mutilevel Queue (Tuỳ cách thiết lp).
Multilevel Feedback Queue.
Phù, vy là tm ôn xong 4 chương ri đy. Dài quá các bn nh ?
Ti mình vn s tiếp tc cp nhp các câu hi đến các bn trong thi gian sm nht
nhé. Mình s gi comment mi khi update nhng câu hi mi đến các bn.
Nhưng tm thi hôm nay thì nhiêu đây thôi nhe ^^ !
Chúc các bn ôn tp tt và thi tht tt !
***UPDATE*** Chương 3 :
Câu 6 : Trình t thc thi ca tiến trình cha và tiến trình con ?
Có 2 kh năng có th xy ra :
Tiến trình cha tiếp tc thc thi song song vi các tiến trình con ca nó.
Tiến trình cha đi đến khi mt vài hoc tt c các tiến trình con ca nó đã hoàn tt.
Trong khi gii bài tp thì chúng ta s gii theo trường hp 2 (Tiến trình cha đi đến
khi tiến trình con va gi kết thúc mi thc thi tiếp).
Câu 7 : Các tác v đi vi tiến trình (Operations on Process) ?
Có 2 tác v chính : To tiến trình mi và kết thúc tiến trình.
Tạo ến trình mới :
o Mt tiến trình có th to nhiu tiến trình mi thông qua mt li gi h thng create-
process (VD : Hàm fork() trong Unix).
o Tiến trình được tạo là ến trình con của ến trình tạo (ến trình cha).
Quan h cha-con đnh nghĩa mt cây tiến trình.
lOMoARcPSD| 61552889
Hình ảnh minh hoạ của một cây ến trình.
Tiến trình con nhn tài nguyên t HĐH hoc t tiến trình cha.
Chia sẻ tài nguyên của ến trình cha : o Tiến trình cha và tiến trình con chia s mi tài
nguyên. o Tiến trình con chia s mt phn tài nguyên ca cha.
Trình t thc thi ca tiến trình cha và tiến trình con : (Như câu trên).
Kết thúc ến trình, có 2 TH :
o Tiến trình t kết thúc : Tiến trình kết thúc khi thc hin lnh cui cùng ca và
yêu cu h điu hành xoá mình đi, bng cách s dng lnh gi h thng (system call)
exit().
o Tiến trình kết thúc do ến trình khác có quyền kết thúc nó (VD ến trình cha kết thúc ến
trình con).
Gi system routine abort vi tham s là pid ca tiến trình cn được kết thúc.
Tiến trình cha kết thúc và kéo theo tt c tiến trình con ca nó đu kết thúc.
o H điu hành thu hi tt c các tài nguyên ca tiến trình kết thúc (vùng nh, I/O
buffer,…).
lOMoARcPSD| 61552889
Câu 8 : So sánh gia hàm fork() h các hàm exec() trong vic to tiến trình con
mi ?
fork() :
fork() tạo ra ến trình mới bằng cách nhân bản (duplicate) ến trình gọi m này. Tiến
trình được tạo ra thàm fork() được gọi ến trình con (child process), là một bản sao
giống y hệt với ến trình cha tạo ra nó (kể cả trạng thái thực thi), chỉ trừ một số điểm sau
:
o Tiến trình con PID (Process Identifier) ca riêng nó. PID này không trùng vi
bt kỳ PID nào hin có.
o Mi tiến trình con được to ra, đu parent PID ca trùng vi PID ca tiến
trình gi hàm fork() đ to ra nó.
fork() sẽ tr về :
o Cho tiến trình gi hàm (parent process) : PID ca tiến trình con nếu to được tiến
trình con. Ngược li, nếu quá trình to tiến trình con b li, tr v -1.
o Cho tiến trình con được to ra bi hàm fork() : 0 (S 0).
Tiến trình con sau khi được tạo ra, sẽ thực thi ếp tục tại vị trí của cha. o VD : Khi gp lnh
int pid = fork(), tiến trình con s được to ra.
o Tiến trình con s có pid = 0, tiến trình cha s pid = (pid ca con). Hay nói cách
khác, 1 tiến trình gi hàm fork(), mà hàm fork() li tr v 2 kết qu khác nhau v li
cho 2 tiến trình (tiến trình cha và tiến trình con).
o Sau đó tiến trình con s thc hin lnh tiếp theo ca lnh trên ch không thc hin
li t đu (do tiến trình con bản sao ca cha, vy s kế tha trng thái thc
thi ca cha, nên s thc hin tiếp tm fork()).
Họ các hàm exec() :
H các hàm exec() thay thế toàn b tiến trình hin ti bng mt tiến trình mi
bt đu thc thi t đu ca tiến trình mi.
Đim thú v đây là tiến trình mi không nht thiết phi bn sao ca tiến trình
trước, nó có th là mt chương trình hoàn toàn khác.
Sau khi gi exec(), tiến trình hin ti đang chy s b xoá sch thay bng tiến trình
mi. vy, sau khi gi lnh exec(), bt klnh nào sau tiến trình đu không
được thc thi. Ch duy nht khi exec() b li, lúc đó nó mi tr v cho tiến trình cũ.
(Tham kho thêm : hps://stackoverow.com/a/4205020).
lOMoARcPSD| 61552889
Câu 9 : B nh ca cha con trong mt quan h cha-con (parent-child process)
được chia s, cp phát như thế nào ?
Thông thường, khi mt tiến trình to ra mt tiến trình con thì tiến trình con đó s
cn tài nguyên h thng (CPU time, memory, files, I/O devices) đ thc thi công
vic ca mình. Tiến trình con th ly được các tài nguyên cn thiết trc tiếp t
HĐH, hoc t tiến trình cha. Tiến trình cha th s cn phân vùng li các tài
nguyên gia các tiến trình con.
Khi tiến trình con được to ra t lnh fork(), tiến trình con s là mt bn sao y ht
vi tiến trình cha to ra . Đng thi, là mt tiến trình đc lp, mt PCB
riêng ca mình, lưu tr d liu ca riêng mình. vy, khi thay đi giá tr 1 biến
tiến trình con, tiến trình cha s không b nh hưởng. điu kin ngược li cũng
đúng.
Câu 10 (Đọc thêm) : Các gii thut đnh thi được dùng trong mt s h điu hành
thông dng ?
Windows-NT : Multilevel Feedback Queue.
macOS : Multilevel Feedback Queue.
Linux (t 2.6.23 đến nay) : CFS (Completely Fair Scheduler).
Chương 4 :
Câu 6 : Hai yếu t ca gii thut đnh thi là gì ?
Hàm chn la (selection function) : Dùng đ chn process nào trong ready queue
được thc thi (tuỳ thut toán đnh thi s có cách chn khác nhau).
Chế độ quyết định (decision mode) : Chọn thời điểm thực thi hàm chọn lựa để định thời.
Bao gồm 2 chế độ quyết định :
o Non-Preempve (Không trưng dụng) :
Khi trng thái running, process s thc thi cho đến khi kết thúc hoc b blocked
do yêu cu I/O.
o Preempve (Trưng dụng) :
Process đang thc thi (running) có th b ngt và chuyn v trng thái ready.
Chi phí cao hơn non-preemptive. Đi li, ta được thi gian đáp ng tt hơn,
không có trường hp mt process đc chiếm CPU quá lâu.
Câu 7 : Mô tnêu ưu đim, nhược đim ca tng gii thut đnh thi ? FCFS, SJF,
SRTF, RR, Priority Scheduling, HRRN, MQ, MFQ.
lOMoARcPSD| 61552889
FCFS :
Mô tả :
o Cơ chế thực thi :
Tiến trình nào yêu cu CPU trước s được cp phát trước.
Tiến trình s thc thi đến khi kết thúc hoc b blocked do I/O.
o Chế đ quyết đnh : Non-Preemptive. o
Hiện thực : Sử dụng hàng đợi FIFO.
Tiến trình đi vào được thêm vào cui hàng đi.
Tiến trình được la chn đ x lý được ly t đu ca queue.
Ưu điểm : o S không b
starvation.
o Thut toán này d cài đt. Code đơn gin.
Nhược điểm :
o Thi gian ch trung bình ca FCFS thường khá dài (VD : Mt process có bursttime
rt dài đến trước, khi đó các process burst-time nh s phi ch 1 khong thi
gian rt lâu mi đến lượt thc thi).
o Lãng phí thi gian do thi gian phn cng trng khá nhiu (convoy effect).
o Non-preemptive. S không hot đng tt trong các h thng chia s thi gian (time-
sharing system) khi các user đu mong mun được s dng CPU trong mt khong
thi gian và không mun delay quá lâu.
SJF :
Mô tả :
o Cơ chế thực thi :
Đnh thi công vic ngn nht trước (Burst-time nh nht).
Khi CPU được t do, s cp phát cho tiến trình nào yêu cu ít thi gian nht đ
kết thúc (burst-time nh nht).
Burst-time có được t vic d đoán, da vào các ln chy trước ca tiến trình.
Nếu có 2 tiến trình cùng Burst-time, tiến trình nào vào hàng đi trước s được chy
trước (không xét đ ưu tiên).
lOMoARcPSD| 61552889
o Chế đ quyết đnh : Non-Preemptive.
Ưu đim : Ti ưu. Cho thi gian ch đi trung bình ti thiu vi mt tp tiến
trình cho trước.
Nhược điểm : o Cn phi ước lượng thi gian cn CPU tiếp theo ca process
(Burst time).
o th xy ra starvation nếu s lượng process burst time nh cn được thc thi
quá nhiu.
SRTF :
Mô tả :
o Cơ chế thực thi :
(Tương t SJF).
Nếu mt tiến trình mi được đưa vào danh sách vi chiu dài s dng CPU cho ln
tiếp theo nhhơn (lưu ý, ch nhỏ hơn, nếu burst-time bng thì không preempt) thi
gian còn li ca tiến trình đang x lý, s dng hot đng tiến trình hin hành
(preempt). o Chế đ quyết đnh : Preemptive.
Ưu điểm : o Preemptive. Thi gian đáp ng nhanh cho các
tác v nh. o Tránh vic mt tác v ln đc chiếm CPU.
o Thi gian ch đi trung bình thường s nh hơn SJF.
Nhược điểm : o (Các nhược
đim ca SJF).
o Tăng thi gian hoàn thành trung bình.
Priority Scheduling :
Mô tả :
o Cơ chế hoạt động :
Mi tiến trình s được gán 1 đ ưu tiên.
CPU s được cp cho tiến trình có đ ưu tiên cao nht.
Định thời sử dụng độ ưu ên có thể là :

Preview text:

lOMoAR cPSD| 61552889 Chào các bạn !
Đến nay thì chúng ta đã học xong chương 1,2,3,4 và chuẩn bị bước vào đợt thi giữa
kỳ rồi. Vậy thì, chúng mình cùng ôn tập lại một số kiến thức, để nhớ bài hơn và thi tốt hơn nhé ^^ !
Ôn tập chương 1 :
Câu 1 : Định nghĩa hệ điều hành?
- Hệ điều hành là chương trình trung gian giữa phần cứng máy tính và người sử
dụng, có chức năng điều khiển và phối hợp việc sử dụng phần cứng và cung cấp các
dịch vụ cơ bản cho các ứng dụng.
Câu 2 : Cấu trúc hệ thống máy tính gồm những phần nào?
- Phần cứng (hardware): Bao gồm các tài nguyên phần cứng của máy tính như CPU,
bộ nhớ, các thiết bị I/O. Ví dụ: Chuột, bàn phím, màn hình, …
- Hệ điều hành (operating system): Phân phối tài nguyên, điều khiển và phối hợp
các hoạt động của các chương trình trong hệ thống. Ví dụ một số loại HĐH: MS – DOS, Linux, Window
- Chương trình ứng dụng (application programs): Sử dụng hệ thống tài nguyên để
giải quyết một bài toán tính toán nào đó của người sử dụng. Ví dụ: game
- Users (people, machines, other computers)
Câu 3 : Hệ điều hành có những chức năng gì?
- Phân chia thời gian xử lý và định thời CPU.
- Phối hợp và đồng bộ hoạt động giữa các processes (coordination & synchronization).
- Quản lý tài nguyên hệ thống (thiết bị I/O, bộ nhớ, file chứa dữ liệu,…).
- Thực hiện và kiểm soát access control, protection.
- Duy trì sự nhất quán (integrity) của hệ thống, kiểm soát lỗi và phục hồi hệ thống
khi có lỗi (error recovery).
- Cung cấp giao diện làm việc cho users.
Câu 4 : Dưới góc độ hình thức xử lý, hệ điều hành chia thành những loại nào? Trong
mỗi loại có những yêu cầu gì với hệ điều hành?
- Hệ thống xử lý theo lô lOMoAR cPSD| 61552889
+ Hệ thống đơn chương (uniprograming OS): •
Tác vụ được thi hành tuần tự. • Yêu cầu:
o Bộ giám sát thường trực o CPU và các thao tác nhập xuất:  Xử lý offline 
Đồng bộ hóa các thao tác bên ngoài – Spooling (Simultaneous Peripheral Operation On Line)
+ Hệ thống đa chương (multiprogramming OS): •
Nhiều công việc được nạp đồng thời vào bộ nhớ chính, tận dụng được thời gian rảnh
của các tiến trình đang trong giai đoạn chờ thực thi. • Yêu cầu:
o Định thời công việc (job scheduling): chọn job trong job pool trên đĩa và nạp nó vào bộ nhớ để thực thi.
o Quản lý bộ nhớ (memory management).
o Định thời CPU (CPU scheduling). o Cấp phát tài nguyên (đĩa, máy in,…). o Bảo vệ.
+ Hệ thống chia sẻ thời gian: •
Là hệ thống đa nhiệm, lập lịch cho các tiến trình thực thi trên CPU. •
Yêu cầu: o Định thời công việc (job scheduling). o Quản lý bộ nhớ (memory management). 
Virtual memory o Quản lý các quá trình (process management)  Định thời CPU 
Đồng bộ các quá trình (synchronization) 
Giao tiếp giữa các quá trình (process communication)  Tránh deadlock lOMoAR cPSD| 61552889
o Quản lý hệ thống file, hệ thống lưu trữ. o Cấp phát hợp lý các tài nguyên. o Bảo vệ (protection). +Hệ thống song song: 
Nhiều CPU, chia sẻ computer bus, clock  Ưu điểm: o Năng suất:
càng nhiều CPU thì càng xử lý công việc nhanh. o Multiprocessor system ít
tốn kém hơn multiple single-processor system.
o Độ tin cậy: khi một processor hỏng thì công việc của nó được chia sẻ giữa các processor còn lại. •
Phân loại: Đa xử lý đối xứng và đa xử lý bất đối xứng. + Hệ thống phân tán: •
Mỗi processor có bộ nhớ riêng, giao tiếp với nhau qua các kênh nối như mạng, bus
tốc độ cao nhưng người dùng chỉ thấy một hệ thống đơn nhất. • Ưu điểm:
o Chia sẻ tài nguyên (resource sharing) o Chia sẻ sức mạnh tính toán (computational
sharing) o Độ tin cậy cao (high reliability) o Độ sẵn sàng cao (high availability): các
dịch vụ của hệ thống được cung cấp liên tục cho dù một thành phần hardware trở nên hỏng. •
Các mô hình hệ thống song song: client-sever và peer-to-peer +Hệ thống xử lý thời gian thực: •
Sử dụng trong các thiết bị chuyên dụng như điều khiển các thử nghiệm khoa học,
điều khiển trong y khoa, dây chuyền công nghiệp, thiết bị gia dụng, quân sự. •
Ràng buộc về thời gian: hard và soft real-time. o Hard real-time. 
Hạn chế (hoặc không có) bộ nhớ phụ, tất cả dữ liệu nằm trong bộ nhớ chính (RAM hoặc ROM). 
Yêu cầu về thời gian đáp ứng/xử lý rất nghiêm ngặt, thường sử dụng trong điều khiển công nghiệp, robotics,… lOMoAR cPSD| 61552889
o Soft real-time: Thường được dùng trong lĩnh vực multimedia, virtual reality với yêu
cầu mềm dẻo hơn về thời gian đáp ứng.
Câu 5 : Dưới góc độ loại máy tính, hệ điều hành chia thành những loại nào?
- Hệ điều hành dành cho máy MainFrame.
- Hệ điều hành dành cho máy Server.
- Hệ điều hành dành cho máy nhiều CPU.
- Hệ điều hành dành cho máy tính cá nhân (PC).
- Hệ điều hành dành cho máy PDA (Embedded OS - hệ điều hành nhúng).
- Hệ điều hành dành cho máy chuyên biệt.
- Hệ điều hành dành cho thẻ chíp (SmartCard).
Câu 6 : Nêu lịch sử phát triển của HĐH: - Thế hệ 1 (1945 - 1955) •
Thiết kế, xây dựng, lập trình, thao tác: do 1 nhóm người. •
Lưu trên phiếu đục lỗ. - Thế hệ 2 (1955 - 1965) •
Xuất hiện sự phân công công việc •
Hệ thống sử lý theo lô ra đời, lưu trên băng từ. •
Hoạt động dưới sự điều khiển đặc biệt của 1 chương trình . •
Chưa xuất hiện hệ điều hành. - Thế hệ 3 (1965 - 1980) •
Ra đời hệ điều hành, khái niệm đa chương. •
HĐH chia sẻ thời gian như CTSS của MIT. • MULTICS, UNIX. - Thế hệ 4 (1980) •
Ra đời máy tính cá nhân, IBM PC. •
HĐH MS-DOS, MacOS (Apple Macintosh), HĐH mạng,… Câu 7 : Những yêu cầu
của hệ thống chia sẻ thời gian ? lOMoAR cPSD| 61552889 - Yêu cầu: •
Định thời công việc (job scheduling). •
Quản lý bộ nhớ (memory management). o Virtual memory. •
Quản lý các quá trình (process management). • Định thời CPU. •
Đồng bộ các quá trình (synchronization). •
Giao tiếp giữa các quá trình (process communication). o Tránh deadlock. •
Quản lý hệ thống file, hệ thống lưu trữ •
Cấp phát hợp lý các tài nguyên  Bảo vệ (protection).
Câu 8 : Đặc điểm của hệ thống đa chương?
- Nhiều công việc được nạp đồng thời vào bộ nhớ chính
- Khi một tiến trình thực hiện I/O, một tiến trình khác có thể được thực thi - Tận
dụng được thời gian rảnh, tăng hiệu suất sử dụng CPU (CPU utilization) Ôn tập chương 2 :
Câu 1 : Hệ điều hành bao gồm những thành phần nào? Cụ thể từng thành phần? - Quản lý tiến trình
- Quản lý bộ nhớ chính - Quản lý file - Quản lý hệ thống I/O
- Quản lý hệ thống lưu trữ thứ cấp - Hệ thống bảo vệ
- Hệ thống thông dịch lệnh
Câu 2 : Các cơ chế trao đổi thông tin giữa các tiến trình? - Vùng nhờ chia sẻ - Chuyển thông điệp lOMoAR cPSD| 61552889 - Dùng tín hiệu * - Pipe *
* Hai cách này không có trong slide
Câu 3 : Cấu trúc hệ thống gồm những loại nào? Cho ví dụ từng loại (theo sách tham khảo)
- Cấu trúc đơn giản: MS-DOS
- Cấu trúc phức tạp hơn: UNIX
- Cấu trúc phân tầng: THE
- Cấu trúc vi nhân: QNX, WindowNT, POSIX, …
Câu 4 : Chương trình hệ thống gồm những phần nào?
- Quản lý hệ thống file: như create, delete, rename, list
- Thông tin trạng thái: như date, time, dung lượng bộ nhớ trống
- Soạn thảo file: như file editor
- Hỗ trợ ngôn ngữ lập trình: như compiler, assembler, interpreter
- Nạp, thực thi, giúp tìm lỗi chương trình: như loader, debugger
- Giao tiếp: như email, talk, web browser
Câu 5 : Lời gọi hệ thống là gì và dùng để làm gì?
- Lời gọi hệ thống là việc một chương trình máy tính yêu cầu một dịch vụ từ nhân
của hệ điều hành mà nó được thực thi. - Tác dụng: •
Dùng để giao tiếp giữa tiến trình và hệ điều hành 
Cung cấp giao diện giữa tiến trình và hệ điều hành
Câu 6 : Hệ điều hành cung cấp những dịch vụ nào? - Thực thi chương trình
- Thực hiện các thao tác I/O theo yêu cầu của chương trình
- Các thao tác trên hệ thống file
- Trao đổi thông tin giữa các tiến trình qua hai cách: lOMoAR cPSD| 61552889 •
Chia sẻ bộ nhớ (Shared memory) •
Chuyển thông điệp (Message passing) - Phát hiện lỗi
- Ngoài ra còn các dịch vụ giúp tăng hiệu suất của hệ thống: •
Cấp phát tài nguyên (resource allocation):
o CPU, bộ nhớ chính, ổ đĩa,… o
OS có các routine tương ứng.
+ Kế toán (accounting): Nhằm lưu vết user để tính phí hoặc đơn giản để thống kê. + Bảo vệ (protection) •
Hai tiến trình khác nhau không được ảnh hưởng nhau  Kiểm soát được các
truy xuất tài nguyên của hệ thống
+ An ninh (security): Chỉ các user được phép sử dụng hệ thống mới truy cập được
tài nguyên của hệ thống (vd: thông qua username và password) Câu 7 : Các khái
niệm liên quan đến máy ảo?
- Máy ảo là phần mềm tạo ra môi trường giữa hệ nên máy tính và người dùng, người
dùng có thể thực thi phần mềm trên máy ảo
- Ví dụ: Virtual Box, Parallels Ôn tập chương 3 :
Câu 1 : Một tiến trình chứa những thành phần gì ?
Một chương trình (program) sẽ trở thành tiến trình (process) chỉ khi nó được nạp
lên bộ nhớ (memory) của máy tính (hay nói cách khác – được thực thi).
Một tiến trình bao gồm : Trong bộ nhớ (memory) : •
Text Section (Program code) : Chứa những đoạn mã chương trình đã được biên dịch bởi compiler. •
Data Section (khu vực dữ liệu) : Chứa các biến toàn cục (global variables) và các biến
tĩnh (static variables) được khởi tạo trước khi hàm main được gọi. •
Heap : Dùng để lưu trữ các bộ nhớ được cấp phát động (như việc gọi new, delete, malloc, calloc, free,…). lOMoAR cPSD| 61552889 •
Stack : Dùng để lưu trữ các biến cục bộ (local variables). VD như lúc bạn khai báo
trong C : int i = 0. Thì biến i sẽ được lưu trong bộ nhớ Stack của Process.
Một tiến trình trong bộ nhớ.
Ngoài ra, trong process còn có : • Program Counter (PC). • Process status word (PSW). • Stack pointer (SP). • Memory management registers.
Câu 2 : Tiến trình có những trạng thái nào ? Cách tiến trình chuyển trạng thái ?
Tiến trình có các trạng thái sau : •
new : Tiến trình vừa được tạo. •
ready :Tiến trình đã có đủ tài nguyên, đang chờ được cấp CPU để chạy. •
running :Các lệnh của tiến trình đang được thực thi. •
waiting (hay blocked) : Tiến trình đợi I/O hoàn tất. •
terminated : Tiến trình đã kết thúc (đã thực thi xong). lOMoAR cPSD| 61552889
Cách tiến trình chuyển trạng thái :
Đầu tiên, khi vừa khởi tạo, tiến trình sẽ ở trạng thái là new.
Thông qua bộ định thời dài hạn Long-term scheduling (hay còn gọi là bộ định thời
công việc – Job Scheduler), tiến trình của chúng ta từ new sẽ được sắp xếp vị trí để
“chui” vào trong hàng đợi ready.
Ở một số hệ điều hành có thêm bộ định thời Medium-term Scheduler.
Thông qua bộ định thời này, các tiến trình sẽ được swap-out (chuyển tiến trình từ
bộ nhớ chính sang bộ nhớ phụ) và swap-in (chuyển tiến trình từ bộ nhớ phụ vào bộ
nhớ). VD : Paging trong HĐH Windows, hoặc Swap trong Linux.
Thông qua bộ định thời Short-term Scheduling (hay còn được gọi là Dispatcher), từ
trạng thái ready tiến trình sẽ được sắp xếp để chuyển qua trạng thái running(là trạng
thái chạy – hay trạng thái sử dụng CPU – của tiến trình).
Trong khi đang ở trạng thái running, có 3 trạng thái tiếp theo mà tiến trình có thể đạt được tiếp theo : •
waiting : Khi tiến trình đang chờ I/O (VD : Khi gọi hàm print(), scanf() trong C). •
ready :Khi tiến trình bị interrupt (bị ngắt, không cho chạy nữa) bởi Shortterm
Scheduler.
Các lý do ngắt có thể là : Ngắt thời gian (Clock Interrupt), Ngắt ngoại vi
(I/O Interrupt), Lời gọi hệ thống (Operating System Call), Signal. •
terminated : Khi ứng dụng thực thi xong : Khi gặp lệnh exit, khi thực thi lệnh cuối.
Trong khi ở trạng thái waiting, tiến trình sẽ chuyển sang trạng thái ready(vào hàng
đợi ready) sau khi đã thực thi xong I/O.
Chuyển các trạng thái của tiến trình. lOMoAR cPSD| 61552889
Tiến trình chuyển trạng thái bằng các bộ định thời khác nhau.
(Nói thêm : Có thể có >= 1 tiến trình ở trạng thái ready và waiting, tuy nhiên chỉ có
duy nhất 1 tiến trình ở trạng thái runningtại một thời điểm nhất định mà ta đang xét).
Câu 3 : Tại sao phải cộng tác giữa các tiến trình ?
Trong tiến trình thực thi, các tiến trình có thể cộng tác (cooperate) để hoàn thành các công việc.
Các tiến trình cộng tác với nhau để : •
Chia sẻ dữ liệu (information sharing). •
Tăng tốc độ tính toán (computational speedup). o Các mạng lưới máy tính sẽ
hợp với nhau để tạo thành các cluster.
o Nếu hệ thống có nhiều CPU, chia công việc tính toán thành nhiều công việc tính toán nhỏ chạy song song. 
Thực hiện một công việc chung.
o Xây dựng một phần mềm phức tạp bằng cách chia thành các module/process hợp tác nhau.
Câu 4 : PCB là gì ? Chứa những thông tin gì ? Dùng để làm gì ? lOMoAR cPSD| 61552889
Mỗi tiến trình trong hệ thống đều được cấp phát một Process Control Block (PCB).
Là một trong các cấu trúc dữ liệu quan trọng nhất của hệ điều hành.
PCB chứa các thông tin liên quan đến process như : •
Trạng thái tiến trình (Process State) : new, ready, running,… •
Bộ đếm chương trình (Program Counter) : Chỉ đến địa chỉ của lệnh tiếp theo sẽ được
thực thi cho tiến trình này. •
Các thanh ghi CPU (CPU Registers) : Phụ thuộc vào kiến trúc máy tính. Có thể kể
đến vài loại như accumulators, index registers, stack pointers, general-purpose
registers, condition-code information. •
Thông tin lập thời biểu CPU (CPU Scheduling Information) : Độ ưu tiên, con trỏ
đến các hàng đợi, và các tham số của việc lập thời biểu. •
Thông tin quản lý bộ nhớ (Memory-Management Information) : Chứa page tables,
segment tables, memory limits (giới hạn bộ nhớ). •
Thông tin trạng thái I/O (I/O status information) : Chứa danh sách các thiết bị
I/O đã được cấp phát cho tiến trình, danh sách các file tiến trình đang mở,… •
Các thông tin quan trọng khác như : Lượng CPU, thời gian sử dụng,PID,…
Hình ảnh minh hoạ một Process Control Block.
Vậy, các PCB đơn giản là các kho dữ liệu, trong đó chứa các dữ liệu khác nhau của nhiều process khác nhau.
Câu 5 : Tiểu trình là gì ? lOMoAR cPSD| 61552889
Tiểu trình : Là một đơn vị cơ bản sử dụng CPU, gồm : • Thread ID. • PC (Program Counter). • Registers. • Stack. •
Chia sẻ chung code, data, resources (file).
So sánh giữa đơn tiến trình và đa tiến trình. Ôn tập chương 4.
Câu 1 : Tại sao phải định thời ? Nêu các bộ định thời và mô tả về chúng ?
Mục tiêu của việc lập trình đa luồng là hướng đến việc luôn luôn phải có tiến trình
sử dụng CPU, hay nói cách khác, là tối đa hoá việc sử dụng CPU. Ngoài ra, mục tiêu
của các hệ thống time sharing (chia sẻ thời gian – tức các hệ thống HĐH hiện nay)
là việc mang đến cho người dùng cảm giác chiếc máy tính của mình có thể làm được
nhiều công việc cùng một lúc. Việc đó chỉ có thể đạt được thông qua việc chuyển
quyền sử dụng CPU thật nhanh qua lại giữa các tiến trình. lOMoAR cPSD| 61552889
Và để đạt được các mục tiêu nêu trên, trình định thời (Scheduler) sẽ lựa chọn trong
các tiến trình hiện có để thực thi trên CPU. Nguyên nhân là do, trong một thời điểm
nhất định, chỉ duy nhất có một tiến trình được quyền ở trạng thái running mà thôi. Có 3 bộ định thời :
 Short-Term Scheduling (hay còn gọi là Dispatcher) : Dùng để định thời cho CPU. o Xác
định process nào trong ready queue sẽ được chiếm CPU để thực thi kế tiếp.
o Bộ định thời Short-Term sẽ được gọi mỗi khi có một trong các sự kiện/interrupt sau xảy ra : 
Ngắt thời gian (clock interrupt). 
Ngắt ngoại vi (I/O interrupt). 
Lời gọi hệ thống (Operating System Call).  Signal.
 Medium-Term Scheduling : Dùng để định thời Swaping. o Process nào được đưa
vào (swap-in), đưa ra khỏi (swap-out) bộ nhớ chính.
o Được thực hiện bởi phần quản lý bộ nhớ và được thảo luận ở phần quản lý bộ nhớ.
 Long-Term Scheduling (hay còn gọi là Job Scheduler) : o Xác định chương trình
nào được chấp nhận nạp vào hệ thống để thực thi. o Điều khiển mức độ
multiprogramming của hệ thống.
o Long-Term Scheduling thường cố gắng duy trì xen lẫn CPU-Bound và I/O Bound Process.
Câu 2 : Các tiêu chuẩn định thời CPU ?
Các thuật toán định thời CPU khác nhau có các tính chất khác nhau. Vì vậy, rất
nhiều tiêu chí đã được đề ra để so sánh các thuật toán định thời CPU. Các tiêu chuẩn
được liệt kê như sau : •
Mức độ sử dụng CPU (CPU Utilization) : Chúng ta muốn giữ làm sao
cho CPU càng bận càng tốt. Theo lý thuyết thì CPU utilization có thể đạt từ 0 đến
100 phần trăm. Trong hệ thống thực tế, thông thường CPU Utilization sẽ đạt 40
phần trăm (cho hệ thống lúc rỗi), và có thể đạt mức lên đến 90 phần trăm (cho lúc hệ thống load nặng). lOMoAR cPSD| 61552889 •
Thông lượng (Throughput) : Một trong những thước đo cho hiệu quả của quá trình
làm việc đó chính là thông lượng. Thông lượng được tính bằng số lượng tiến trình
đã được hoàn thành trong một đơn vị thời gian. •
Thời gian hoàn thành (Turnaround time) : Từ góc nhìn của một tiến
trình nhất định, một yếu tố quan trọng cần xem xét đó chính là khoảng thời gian
cần thiết để thực thi tiến trình đó. Khoảng thời gian từ lúc tiến trình được ghi nhận
đến khi hoàn thành chính là Turnaround Time. Vì vậy, Turnaround Time
là tổng của tất cả các khoảng thời gian : Tiến trình trong hàng đợi, thực thi trên CPU và thực thi lệnh I/O. •
Thời gian đợi (Waiting time) : Tổng thời gian tiến trình đã ở trong hàng đợi ready queue. •
Thời gian đáp ứng (Response Time) : Thời gian từ lúc tiến trình xuất hiện cho đến khi
thực hiện tiến trình đó lần đầu tiên.
Câu 3 : Có bao nhiêu giải thuật định thời ? Kể tên. •
First-Come, First-Served (FCFS). •
Shortest-Job-First Scheduling (SJF). •
Preemptive SJF (hay Shortest-Remaining-Time First – SRTF). • Priority Scheduling. • Round-Robin (RR). •
Highest Response Ratio Next (HRRN). • Multilevel Queue. • Multilevel Feedback Queue.
Câu 4 : Trong các hàng đợi định thời, định thời nào có thể preemptive ? •
SJF có thể Preemptive -> SRTF. • Priority Scheduling. • RR. •
Mutilevel Queue (Tuỳ cách thiết lập). • Multilevel Feedback Queue.
Câu 5 : Trong các giải thuật định thời, giải thuật nào không xảy ra starvation ? lOMoAR cPSD| 61552889
Starvation xảy ra khi một tiến trình đã ở trong hàng đợi quá lâu, nhưng không được
cung cấp CPU để sử dụng.
Các giải thuật sẽ không xảy ra starvation : • FCFS. • RR. • HRRN. •
Mutilevel Queue (Tuỳ cách thiết lập). • Multilevel Feedback Queue.
Phù, vậy là tạm ôn xong 4 chương rồi đấy. Dài quá các bạn nhỉ ?
Tụi mình vẫn sẽ tiếp tục cập nhập các câu hỏi đến các bạn trong thời gian sớm nhất
nhé. Mình sẽ gửi comment mỗi khi có update những câu hỏi mới đến các bạn.
Nhưng tạm thời hôm nay thì nhiêu đây thôi nhe ^^ !
Chúc các bạn ôn tập tốt và thi thật tốt !
***UPDATE*** Chương 3 :
Câu 6 : Trình tự thực thi của tiến trình cha và tiến trình con ?
Có 2 khả năng có thể xảy ra : •
Tiến trình cha tiếp tục thực thi song song với các tiến trình con của nó. •
Tiến trình cha đợi đến khi một vài hoặc tất cả các tiến trình con của nó đã hoàn tất.
Trong khi giải bài tập thì chúng ta sẽ giải theo trường hợp 2 (Tiến trình cha đợi đến
khi tiến trình con vừa gọi kết thúc mới thực thi tiếp).
Câu 7 : Các tác vụ đối với tiến trình (Operations on Process) ?
Có 2 tác vụ chính : Tạo tiến trình mới và kết thúc tiến trình. •
Tạo tiến trình mới :
o Một tiến trình có thể tạo nhiều tiến trình mới thông qua một lời gọi hệ thống create-
process (VD : Hàm fork() trong Unix).
o Tiến trình được tạo là tiến trình con của tiến trình tạo (tiến trình cha). 
Quan hệ cha-con định nghĩa một cây tiến trình. lOMoAR cPSD| 61552889
Hình ảnh minh hoạ của một cây tiến trình. •
Tiến trình con nhận tài nguyên từ HĐH hoặc từ tiến trình cha. •
Chia sẻ tài nguyên của tiến trình cha : o Tiến trình cha và tiến trình con chia sẻ mọi tài
nguyên. o Tiến trình con chia sẻ một phần tài nguyên của cha. •
Trình tự thực thi của tiến trình cha và tiến trình con : (Như câu trên). •
Kết thúc tiến trình, có 2 TH :
o Tiến trình tự kết thúc : Tiến trình kết thúc khi thực hiện lệnh cuối cùng của nó và
yêu cầu hệ điều hành xoá mình đi, bằng cách sử dụng lệnh gọi hệ thống (system call) exit().
o Tiến trình kết thúc do tiến trình khác có quyền kết thúc nó (VD tiến trình cha kết thúc tiến trình con). 
Gọi system routine abort với tham số là pid của tiến trình cần được kết thúc. 
Tiến trình cha kết thúc và kéo theo tất cả tiến trình con của nó đều kết thúc.
o Hệ điều hành thu hồi tất cả các tài nguyên của tiến trình kết thúc (vùng nhớ, I/O buffer,…). lOMoAR cPSD| 61552889
Câu 8 : So sánh giữa hàm fork() và họ các hàm exec() trong việc tạo tiến trình con mới ? fork() :
fork() tạo ra tiến trình mới bằng cách nhân bản (duplicate) tiến trình gọi hàm này. Tiến
trình được tạo ra từ hàm fork() được gọi là tiến trình con (child process), là một bản sao
giống y hệt với tiến trình cha tạo ra nó (kể cả trạng thái thực thi), chỉ trừ một số điểm sau :
o Tiến trình con có PID (Process Identifier) của riêng nó. PID này không trùng với
bất kỳ PID nào hiện có.
o Mỗi tiến trình con được tạo ra, đều có parent PID của nó trùng với PID của tiến
trình gọi hàm fork() để tạo ra nó.  fork() sẽ trả về :
o Cho tiến trình gọi hàm (parent process) : PID của tiến trình con nếu tạo được tiến
trình con. Ngược lại, nếu quá trình tạo tiến trình con bị lỗi, trả về -1.
o Cho tiến trình con được tạo ra bởi hàm fork() : 0 (Số 0).
 Tiến trình con sau khi được tạo ra, sẽ thực thi tiếp tục tại vị trí của cha. o VD : Khi gặp lệnh
int pid = fork(), tiến trình con sẽ được tạo ra.
o Tiến trình con sẽ có pid = 0, tiến trình cha sẽ có pid = (pid của con). Hay nói cách
khác, 1 tiến trình gọi hàm fork(), mà hàm fork() lại trả về 2 kết quả khác nhau về lại
cho 2 tiến trình (tiến trình cha và tiến trình con).
o Sau đó tiến trình con sẽ thực hiện lệnh tiếp theo của lệnh trên chứ không thực hiện
lại từ đầu (do tiến trình con là bản sao của cha, vì vậy nó sẽ kế thừa trạng thái thực
thi của cha, nên sẽ thực hiện tiếp từ hàm fork()).
Họ các hàm exec() :
Họ các hàm exec() thay thế toàn bộ tiến trình hiện tại bằng một tiến trình mới và
bắt đầu thực thi từ đầu của tiến trình mới. •
Điểm thú vị ở đây là tiến trình mới không nhất thiết phải là bản sao của tiến trình
trước, nó có thể là một chương trình hoàn toàn khác. •
Sau khi gọi exec(), tiến trình hiện tại đang chạy sẽ bị xoá sạch và thay bằng tiến trình
mới. Vì vậy, sau khi gọi lệnh exec(), bất kỳ lệnh nào sau nó ở tiến trình cũ đều không
được thực thi. Chỉ duy nhất khi exec() bị lỗi, lúc đó nó mới trả về cho tiến trình cũ.
(Tham khảo thêm : https://stackoverflow.com/a/4205020). lOMoAR cPSD| 61552889
Câu 9 : Bộ nhớ của cha và con trong một quan hệ cha-con (parent-child process)
được chia sẻ, cấp phát như thế nào ?
Thông thường, khi một tiến trình tạo ra một tiến trình con thì tiến trình con đó sẽ
cần tài nguyên hệ thống (CPU time, memory, files, I/O devices) để thực thi công
việc của mình. Tiến trình con có thể lấy được các tài nguyên cần thiết trực tiếp từ
HĐH, hoặc từ tiến trình cha. Tiến trình cha có thể sẽ cần phân vùng lại các tài
nguyên giữa các tiến trình con.
Khi tiến trình con được tạo ra từ lệnh fork(), tiến trình con sẽ là một bản sao y hệt
với tiến trình cha tạo ra nó. Đồng thời, nó là một tiến trình độc lập, có một PCB
riêng của mình, lưu trữ dữ liệu của riêng mình. Vì vậy, khi thay đổi giá trị 1 biến ở
tiến trình con, tiến trình cha sẽ không bị ảnh hưởng. Và điều kiện ngược lại cũng đúng.
Câu 10 (Đọc thêm) : Các giải thuật định thời được dùng trong một số hệ điều hành thông dụng ? •
Windows-NT : Multilevel Feedback Queue. •
macOS : Multilevel Feedback Queue. •
Linux (từ 2.6.23 đến nay) : CFS (Completely Fair Scheduler). Chương 4 :
Câu 6 : Hai yếu tố của giải thuật định thời là gì ? •
Hàm chọn lựa (selection function) : Dùng để chọn process nào trong ready queue
được thực thi (tuỳ thuật toán định thời sẽ có cách chọn khác nhau). •
Chế độ quyết định (decision mode) : Chọn thời điểm thực thi hàm chọn lựa để định thời.
Bao gồm 2 chế độ quyết định :
o Non-Preemptive (Không trưng dụng) : 
Khi ở trạng thái running, process sẽ thực thi cho đến khi kết thúc hoặc bị blocked do yêu cầu I/O.
o Preemptive (Trưng dụng) : 
Process đang thực thi (running) có thể bị ngắt và chuyển về trạng thái ready. 
Chi phí cao hơn non-preemptive. Đổi lại, ta có được thời gian đáp ứng tốt hơn, vì
không có trường hợp một process độc chiếm CPU quá lâu.
Câu 7 : Mô tả và nêu ưu điểm, nhược điểm của từng giải thuật định thời ? FCFS, SJF,
SRTF, RR, Priority Scheduling, HRRN, MQ, MFQ. lOMoAR cPSD| 61552889 FCFS :  Mô tả : o Cơ chế thực thi : 
Tiến trình nào yêu cầu CPU trước sẽ được cấp phát trước. 
Tiến trình sẽ thực thi đến khi kết thúc hoặc bị blocked do I/O.
o Chế độ quyết định : Non-Preemptive. o
Hiện thực : Sử dụng hàng đợi FIFO. 
Tiến trình đi vào được thêm vào cuối hàng đợi. 
Tiến trình được lựa chọn để xử lý được lấy từ đầu của queue.
 Ưu điểm : o Sẽ không bị starvation.
o Thuật toán này dễ cài đặt. Code đơn giản.  Nhược điểm :
o Thời gian chờ trung bình của FCFS thường khá dài (VD : Một process có bursttime
rất dài đến trước, khi đó các process có burst-time nhỏ sẽ phải chờ 1 khoảng thời
gian rất lâu mới đến lượt thực thi).
o Lãng phí thời gian do thời gian phần cứng trống khá nhiều (convoy effect).
o Non-preemptive. Sẽ không hoạt động tốt trong các hệ thống chia sẻ thời gian (time-
sharing system) khi các user đều mong muốn được sử dụng CPU trong một khoảng
thời gian và không muốn delay quá lâu. SJF :  Mô tả : o Cơ chế thực thi : 
Định thời công việc ngắn nhất trước (Burst-time nhỏ nhất). 
Khi CPU được tự do, nó sẽ cấp phát cho tiến trình nào yêu cầu ít thời gian nhất để
kết thúc (burst-time nhỏ nhất). 
Burst-time có được từ việc dự đoán, dựa vào các lần chạy trước của tiến trình. 
Nếu có 2 tiến trình cùng Burst-time, tiến trình nào vào hàng đợi trước sẽ được chạy
trước (không xét độ ưu tiên). lOMoAR cPSD| 61552889
o Chế độ quyết định : Non-Preemptive. •
Ưu điểm : Tối ưu. Cho thời gian chờ đợi trung bình tối thiểu với một tập tiến trình cho trước. •
Nhược điểm : o Cần phải ước lượng thời gian cần CPU tiếp theo của process (Burst time).
o Có thể xảy ra starvation nếu số lượng process có burst time nhỏ cần được thực thi quá nhiều. SRTF :  Mô tả : o Cơ chế thực thi :  (Tương tự SJF). 
Nếu một tiến trình mới được đưa vào danh sách với chiều dài sử dụng CPU cho lần
tiếp theo nhỏ hơn (lưu ý, chỉ nhỏ hơn, nếu burst-time bằng thì không preempt) thời
gian còn lại của tiến trình đang xử lý, nó sẽ dừng hoạt động tiến trình hiện hành
(preempt). o Chế độ quyết định : Preemptive.
 Ưu điểm : o Preemptive. Thời gian đáp ứng nhanh cho các
tác vụ nhỏ. o Tránh việc một tác vụ lớn độc chiếm CPU.
o Thời gian chờ đợi trung bình thường sẽ nhỏ hơn SJF.
 Nhược điểm : o (Các nhược điểm của SJF).
o Tăng thời gian hoàn thành trung bình. Priority Scheduling :  Mô tả : o Cơ chế hoạt động : 
Mỗi tiến trình sẽ được gán 1 độ ưu tiên. 
CPU sẽ được cấp cho tiến trình có độ ưu tiên cao nhất. 
Định thời sử dụng độ ưu tiên có thể là :