Professional Documents
Culture Documents
#HĐH #StudyWithMe
Đế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 :
- 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
- 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,…).
- 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).
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ô
Yêu cầu:
Xử lý offline
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 Bả o vệ.
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:
Virtual memory
Tránh deadlock
o Bả o vệ (protection).
Ư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.
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:
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ự .
o Hard real-time.
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 PDA (Embedded OS - hệ điều hành nhúng).
MULTICS, UNIX.
- Thế hệ 4 (1980)
- Yêu cầu:
o Virtual memory.
o Tránh deadlock.
Bả o vệ (protection).
- 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ý file
- Hệ thống bảo vệ
Câu 2 : Các cơ chế trao đổi thông tin giữa các tiến trình?
- Pipe *
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)
- Thông tin trạng thái: như date, time, dung lượng bộ nhớ trống
- Nạp, thực thi, giúp tìm lỗi chương trình: như loader, debugger
- 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:
- Thực hiện các thao tác I/O theo yêu cầu của chương trình
- Trao đổi thông tin giữa các tiến trình qua hai cách:
- 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):
+ 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)
+ 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)
- 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
Ôn tập chương 3 :
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).
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,…).
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.
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 :
ready :Tiế n trình đã có đủ tài nguyên, đang chờ đượ c cấ p CPU để chạ y.
Đầ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 Short-
term 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.
(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.
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.
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ư :
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 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.
Thread ID.
PC (Program Counter).
Registers.
Stack.
Ô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.
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 :
Signal.
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ớ .
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.
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).
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.
Priority Scheduling.
Round-Robin (RR).
Câu 4 : Trong các hàng đợi định thời, định thời nào có thể preemptive ?
Priority Scheduling.
RR.
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 ?
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.
FCFS.
RR.
HRRN.
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 ^^ !
***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 ?
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ó 2 tác vụ chính : Tạo tiến trình mới và kết thúc tiến trình.
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).
Tiến trình con nhậ n tài nguyên từ HĐH hoặ c từ tiến trình 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).
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.
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ó.
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.
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() 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ũ.
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 ?
Chương 4 :
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 :
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.
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.
FCFS :
Mô tả :
o Cơ chế thực thi :
Ưu điểm :
o Sẽ không bị starvation.
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ó burst-time 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).
SJF :
Mô 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).
Nhược điểm :
SRTF :
Mô tả :
(Tương tự SJF).
Nhược điểm :
Priority Scheduling :
Mô tả :
Ưu điểm :
Nhược điểm :
o Có thể xả y ra starvation : Các process có độ ưu tiên thấ p có thể
không bao giờ đượ c thự c thi (giả i pháp : aging – Độ ưu tiên củ a
process sẽ tăng theo thờ i gian).
Round Robin :
Mô tả :
Mỗ i tiế n trình nhậ n đượ c mộ t đơn vị nhỏ thờ i gian CPU (time-
slice, quantum time), thông thườ ng từ 10-100msec để thự c
thi.
CPU Schedulers sẽ chọn 1 tiến trình từ ready queue và “lên dây cót”
một quantum cho tiến trình, sau đó cho tiến trình chạy. Lúc này, sẽ
có 2 khả năng có thể xảy ra :
Thờ i gian chạ y < Quantum : Tiến trình tiếp theo sẽ ngay
lậ p tứ c đượ c thự c thi tiếp (không cầ n chờ hết quantum
time củ a tiến trình trướ c), và tiế n trình tiế p theo đó
cũng đượ c gán 1 quantum time.
Ưu điểm :
o Thờ i gian đáp ứ ng trung bình thườ ng thấ p -> Thích hợ p cho các hệ
thố ng time-sharing.
Nhược điểm :
o Hiệ u suấ t thuậ t toán phụ thuộ c nhiều vào việ c chọ n quantum time.
Mô tả :
Các process ngắ n đượ c ưu tiên hơn vì service time (hay burst
time) nhỏ .
o Công thứ c :
Ưu điểm :
o Không xả y ra starvation.
Nhược điểm :
o Non-Preemptive.
Mô tả :
Hàng đợi ready được chia thành nhiều hàng đợi riêng biệt theo một
số tiêu chuẩn như :
Ví dụ về các hàng đợi được phân cấp trong thuật toán MQS.
Ưu điểm :
o Áp dụ ng nhiều giả i thuậ t định thờ i cho nhiề u loạ i tiế n trình có độ ưu
tiên khác nhau.
o Cho phép các CPU-Bound process đượ c ưu tiên hơn trong việ c thự c
thi -> Thờ i gian hệ thố ng thự c thi tác vụ đượ c cả i thiệ n.
o Có thể hoạ t độ ng trong cả 2 chế độ : Preemptive và Non-Preemptive.
Nhược điểm :
o Các hàng đợ i đa cấ p này cầ n đượ c giám sát -> Hao phí tài nguyên hệ
thố ng.
o Process không thể di chuyể n từ hàng đợ i này sang hàng đợ i khác ->
Không linh độ ng.
Mô tả :
Điểm khác biệ t : Cho phép process nhả y từ queue này đến
queue khác.
Ưu điểm :
Nhược điểm :
o Tố n tài nguyên hệ thố ng để duy trì các queue -> Có thể không thích
hợ p đố i vớ i các hệ thố ng nhỏ .
o Thiế t kế phứ c tạ p.
Lưu ý : Thi giữa kỳ có nội dung phần đầu chương 5 (Slide trước slide “Ôn tập thi
giữa kỳ”). Các bạn nhớ ôn nhé.
https://www.studytonight.com/operating-system/introduction-operating-systems
***UPDATE***
https://www.geeksforgeeks.org/fork-practice-questions/
Bài viết được thực hiện bởi : Nguyễn Văn Đông và Lưu Biêu Nghị.
http://bit.ly/2U3fTpy
Bài trước : Học được gì từ HĐH trong việc quản lý thời gian của bản thân ?
http://bit.ly/2FmlraD