phan xuân huy {[email protected]}dulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/... ·...
TRANSCRIPT
2
Thông tin giới thiệuBố cục môn học: 45 LT + 30 THHình thức thi:
Lý thuyết: 7 điểm (Không sử dụng tài liệu)Thực hành: 3 điểm (Theo qui định của GVHDTH)
Các thắc mắc vui lòng liên hệ:Phan Xuân Huy – [email protected]áo trình môn học:
Hệ điều hành – Lê Khắc Nhiên Ân – ĐHKHTN Tp.HCMHệ điều hành nâng cao - Trần Hạnh Nhi – ĐHKHTN Tp.HCM
3
Mục tiêu của môn học: Cung cấpCác kiến thức cơ bản về HĐH đa nhiệmHiểu rõ mô hình tổ chức, nguyên lý hoạt động, của các thành phần cơ sở của một HĐH hiện đạiBiết cách sử dụng/quản trị các HĐH thông dụng, khai thác tốt các dịch vụ của HĐH.
4
Thảo luận – 1CPU vs nhiều Chương trình
Nhu cầu: Người dùng luôn thích sử dụng HĐH cho phépchạy vài chương trình đồng thờiHệ điều hành như thế gọi là gì?Thực tế: Hầu hết các máy tính chỉ cómột bộ vi xử lý (các máy có >1 CPUrất đắt tiền)Làm sao thỏa mãn được nhu cầu người dùng?
Một CPU rõ ràng chỉ có thể chạy được một chương trìnhKhông thể chia CPU làm nhiều phần như chia bánh được
5
Thảo luận – Chia sẻ bộ nhớCác chương trình muốn có thể chạy thì trước hết cần phảiđược nạp vào trong bộ nhớ chính (RAM).Khi có nhiều chương trình cùng sử dụng bộ nhớ thì HĐH sẽ thực hiện việc chia sẻ cho mỗi chương trình khônggian nhớ riêng.Vấn đề: bộ nhớ RAM thì có hạn (ví dụ 64MB), vậy khichạy nhiều chương trình thì ra sao ??? Ví dụ:
Windows XP (lõi) 60MBWindows Media Player 12MBVisual Studio .NET 30MB
Làm cách nào mà Windows vẫn chạy được?
6
Thảo luận – Chia sẻ card soundKhi đang nghe nhạc, nếu Windows gặp lỗi, ta cónghe được tiếng báo lỗi?
Chỉ có các hệ điều hành như ME, 2000, XP, …Vậy HĐH đã sử dụng giải pháp nào?
Luân phiên?Tuần tự?Chia bánh?Giải pháp khác?
☺Về nhà bạn thử làm cho Windows phát 2 bàinhạc khác nhau trên 2 loa xem? Có được không?
7
Nội dung môn học: gồm 5 chươngChương 1: Tổng quan về HĐHChương 2: Hệ thống quản lý tập tinChương 3: Hệ thống quản lý xuất nhậpChương 4: Quản lý tiến trìnhChương 5: Quản lý bộ nhớ
8
Chương 1: Tổng quan về HĐHNội dung chương:
Vai trò của Hệ điều hànhCác thành phần của HĐHMột số kiến trúc HĐHQuá trình phát triển của HĐH Một số HĐH hiện đại
9
Vai trò của HĐHQuản trị tài nguyên
Tài nguyên: CPU, RAM, HDD, printer…Đối tượng sử dụng tài nguyên: Chương trình ƯDNhiệm vụ: Cung cấp giải thuật cấp phát, quản trị tài nguyêncho các đối tượng hoạt động.Mục tiêu:Cấp phát đầy đủ, công bằng, hiệu quả
Điều khiển thiết bịNhiệm vụ: Che dấu các chi tiết phần cứng, tạo môi trường dễlàm việc hơn cho NSD.Mục tiêu: Tạo sự độc lập thiết bị.Ví dụ: Làm sao để MS.Word có thể in được với nhiều loại máyin khác nhau như in kim, laser, phun của nhiều hãng khác nhau
10
HĐH và các thành phần của hệ thống
11
HĐH và các thành phần của hệ thống
12
Các dịch vụ của hệ thốngNạp và thi hành chương trình (load & run)Các thao tác xuất nhập (I/O Operations)Các thao tác truy xuất/cập nhật hệ thống tập tin (file system)Các cơ chế liên lạc/trao đổi thông tin giữa các tácvụPhát hiện/chỉnh sửa lỗi…Giao tiếp giữa các chương trình ứng dụng và HĐH được thực hiện phần lớn thông qua các lời gọi hệthống (System Call)
13
Các thành phần của HĐHQuản lý tài nguyên là vai trò quan trọng nhất của HĐH, do đó cần có một số thành quản lý CPU, quản lý bộ nhớ, …
CPU : quản lý tiến trình(bao gồm quản lý CPU)RAM : quản lý bộ nhớ chínhInput/Output : quản lý nhập/xuất (thấy rõ ở DOS)Hệ thống tập tin : Quản lý tập tin
Hệ thống bảo vệQuản lý mạngShell (giao tiếp người dùng)
14
Các thành phần của HĐH
Quaûn lyù tieán trình
Quaûn lyù boä nhôù chính
Quaûn lyù nhaääp xuaát
Quaûn lyù boä nhôù phuï
Heä thoáng taäp tin
Heä thoáng baûo veä
Giao tieáp maïngBoä thoâng dòch leänh
15
Kiến trúc HĐHKiến trúc đơn giảnKiến trúc phân lớpKiến trúc máy ảoKiến trúc client/server
16
1. Kiến trúc đơn giảnVí dụ điển hình cho kiến trúc này là DOS, trong đó HĐH chỉ làm một số nhiệm vụ quản lý còn khá đơn giản và cung cấp thêm một số dịch vụ.HĐH = Thư viện hàm.UD của người dùng vẫn cóthể truy cập trực tiếp đến phần cứng thông qua BIOS, cổng phần cứngKhông hỗ trợ đa nhiệm. Đánh giá khi chương trình treo?
Ứng dụng
Hệ điều hành (DOS)
Phần cứng (BIOS, port)
Tiện ích thường trú
Ví dụ với HĐH DOS
17
2. Kiến trúc phân lớpHĐH phân thành nhiềulớp.Mỗi lớp phụ trách 1 chức năng đặc thù.Lớp bên trên sử dụngchức năng do các lớp bêndưới cung cấp.Khó xác định số lượnglớp, thứ tự lớp !!!Chi phí truyền tham sốxuyên các lớp !!!
18
3. Kiến trúc máy ảo (1/4)Có nghe đến máy ảo bao giờ? Ví dụ?Do mục tiêu của HĐH là chạy được nhiều chương trình đồng thời trên một máy tính nên cách tốt nhất là tạo ra nhiều máy tính ảo từ một máy tính thật để các chương trình chạy riêng trên các máy ảo.Về nguyên tắc các chương trình không biết mình đang chạy trên máy ảo, cũng không biết mình đang phải chia sẻ tài nguyên với các chương trình khác. Ví dụ:
CPU ảo: mỗi chương trình* sở hữu một CPU ảoBộ nhớ ảo: mỗi chương trình một không gian nhớ riêng
19
3.Kiến trúc máy ảo (2/4)
Non-virtual Machine Virtual Machine
20
3.Kiến trúc máy ảo (3/4)- Ví dụ
Java Virtual Machine
Java OSJava VMOperating SystemHardware
Process Process
Java program
• Độc lập với Platform
21
3. Kiến trúc máy ảo (4/4)Ưu điểm:
Môi trường thuận lợi cho sự tương thíchTăng tính an toàn cho hệ thống do các VM độc lậpDễ phát triển các HĐH đơn nhiệm cho các VM độc lập.
Khuyết điểmPhức tạp trong việc giả lập.
22
4. Kiến trúc client/serverCác dịch vụ của HĐH được chia thành 2 phần:
Server: phần hạt nhân, lệ thuộc phần cứngClient: các tiện ích hệ thống, sử dụng dịch vụ do server cung cấp
23
Giới thiệu các dòng HĐH hiện đạiDòng HĐH Windows
Quá trình phát triểnCác phiên bản chính
Dòng HĐH Unix/LinuxQuá trình phát triểnCác distro chính
24
Dòng HĐH WindowsPhát triển bởi Microsoft.Hiện đang chiếm 80% 90% thị trường HĐH.Số lượng dòng mã chương trình:
WinNT: 4 triệuWin2000: 35 triệuWinXP: 40 triệu
25
Quá trình phát triển của dòng HĐH Windows (1/4)
Windows 1.0 – Phát hành 12/1985Windows 2.0
Phát hành 1987Chỉ hổ trợ bộ vi xử lý Intel 8086 hoặc 8088Có thể truy cập 1MB bộ nhớ
Windows 3.0Phát hành 05/1990Có thể truy cập 16MB bộ nhớ
26
Quá trình phát triển của dòng HĐH Windows (2/4)
Windows 3.1Phát hành 04/1992Hỗ trợ TrueType fonts/ Multimedia
Windows NTPhát hành 07/1993Hỗ trợ chíp Intel 386, 486 và các chíp khác không củaPentiumLà hệ điều hành dòng server đầu tiênLà HĐH đầu tiên hỗ trợ các ỨD 32 bits
27
Quá trình phát triển của dòng HĐH Windows (2/4)
Windows 95Phát hành 08/1995Cũng hỗ trợ các ứng dụng 32-bit (nhưng vẫn tương thích vớicác ƯD 16 bits
Windows 98Phát hành 06/1998Tăng cường về mặt hiệu năng và hỗ trợ phần cứng tốt hơnTích hợp các tính năng Internet
Windows MillenniumPhát hành 12/2000Là phiên bản destop hỗ trợ tốt multimedia.
28
Quá trình phát triển của dòng HĐH Windows (4/4)
Windows 2000Phát hành 01/2000Hỗ trợ tính đa xử lý đối xứng : 2-32 CPU.Hỗ trợ đầy đủ tính năng đa ngôn ngữ (UNICODE)Tính hợp đầy đủ các chồng giao thức mạng thông dụngThuộc dòng HĐH server chuyên dụng.Các dòng sản phẩm: Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, Windows 2000 Datacenter Server
Windows 2003Windows Longhorn
Hỗ trợ ƯD 64 bits
29
Quá trình phát triển của dòng HĐH Linux (1/2)
1969: UNIX, Thompson & Ritchie (AT&T Bell Lab)1987: Minix, Andy Tanenbaum1991: birth of Linux
Minix-like OS by Linus Torvardlimited devices, no networking
1994: Linux 1.0 only single-processor i386networking (Internet)enhanced file system (ext2)
1995: Linux 1.2more hardware8086 mode (DOS emulation) includedSupport other architecture:Sparc, Alpha, MIPS
30
Quá trình phát triển của dòng HĐH Linux (2/2)
1996: Linux 2.0multiple architectures, multiple processorsthreads, memory management …
1999: Linux 2.22001: Linux 2.4
ISA PnP, USB,…12/2003: Linux 2.6
31
Các distro chính của HĐH LinuxMandrakeFedora/RedhatDebianSUSEGentoo…
32
Các đặc điểm chính của LinuxLà HĐH tương tự Unix.Là HĐH mã nguồn mởBao gồm khoảng 6 triệu dòng mã (kernel v2.6)Tăng trưởng khoảng 25%/năm từ năm 2003Chiếm khoảng 10% thị trường HĐH.
1
Chương 2: Quản lý xuất nhậpNhiệm vụ của bộ phận quản lý xuất nhậpCác thiết bị xuất nhậpMô hình phân lớp trong quản lý xuất nhậpBộ điều khiển thiết bị (device controller)Trình điều khiển thiết bị (device driver)Cơ chế DMAQuản lý lỗi và bảo vệ quá trình xuất nhập
2
Nhiệm vụMục tiêu của bộ phận quản lý xuất nhập
Giới thiệu lớp trừu tượng và độc lập thiết bịChe giấu các chi tiết kỹ thuật của các thiết bị phần cứng.Quản lý và sửa lỗi.
Làm cho các thiết bị phần cứng đơn giản và dễ dùng.Cho phép chia sẻ các thiết bị phần cứng
Xây dựng các cơ chế bảo vệ các thiết bị được chia sẻ.Điều phối thiết bị để phục vụ cho cùng lúc nhiều nhu cầu sửdụng.
3
Ví dụ về các thiết bị xuất nhậpCác thiết bị giao tiếp:
Các thiết bị chỉ nhập : bàn phím, chuột, joystick…Các thiết bị chỉ xuất : màn hình, máy inCác thiết bị vừa nhập vừa xuất: card mạng.
Các thiết bị lưu trữThiết bị vừa xuất, vừa nhập: đĩa (cứng/mềm), băng từThiết bị chỉ xuất: CD-ROM.
4
Phân loại các thiết bị nhập xuấtPhân loại theo mục đích sử dụng:
Các thiết bị giao tiếp:Các thiết bị chỉ nhập : bàn phím, chuột, joystick…Các thiết bị chỉ xuất : màn hình, máy inCác thiết bị vừa nhập vừa xuất: card mạng.
Các thiết bị lưu trữThiết bị vừa xuất, vừa nhập: đĩa (cứng/mềm), băng từThiết bị chỉ xuất: CD-ROM
Phân loại theo phương pháp truy xuất:Thiết bị khối:
Tổ chức theo từng khối riêng biệt và truy xuất ngẫu nhiên.
Thiết bị tuần tựGởi nhận theo chuỗi bít và phải truy xuất tuần tự.
5
Phân loại các thiết bị nhập xuất (tt)HĐH phải gom nhóm các thiết bị khác nhau thành nhữngnhóm cơ bản để dễ dàng quản lý:
StorageHard drives, Tapes, CDROM
NetworkingEthernet, radio, serial line
MultimediaDVD, Camera, microphones
HĐH phải cung cấp các phương thức nhất quán để truycập các nhóm đối tượng trên. Nếu không, lập trình sẽ rấtkhó khăn
6
Các phương thức truy cập IOSử dụng chung thư viện giao tiếp cho nhiều thiết bị khácnhauVí dụ , với HĐH Unix, sử dụng 4 phương thức chính:
open()close()read()write()
Các phương thức này là các system calls được cung cấpbởi HĐH để cho phép các ứng dụng chúng tương tác vớicác thiết bị xuất nhập.
7
Các phương thức IO của UnixfileHandle = open(pathName, flags, mode)
filehandle: là một số nguyên, dùng để thao tác với tập tin hay thiết bịpathname: tên trong hệ thống file. Trong Unix, các thiết bị đặtdưới thư mục /dev.
E.g. /dev/ttya là serial port đầu tiên, /dev/sda: là SCSI drive đầu tiên
flags: blocking hoặc là non-blocking …mode: read only, read/write, append …
errorCode = close(fileHandle)Kernel sẽ giải phóng các biến lưu trữ cho thiết bị
8
Các phương thức IO của Unix (tt)byteCount = read(fileHandle, byte [] buf, count)
Đọc count bytes từ thiết bị và lưu trong buffer buf.Chương trình người dùng phải kiểm tra byteCount để biết sốbyte thật sự đọc được.byteCount < 0 thì là báo lỗi (xem mã lỗi)
byteCount = write(fileHandle, byte [] buf, count)Ghi count byte từ buf vào thiết bịSố byte thật sự ghi được lưu trong byteCountbyteCount âm là bị lỗi
9
Các đặc tính xuất nhậpBa đặc tính khác nhau cần xem xét khi xử lý 1 thao tácnhập xuất:
blocking vs. non-blockingbuffered vs. unbufferedsynchronous vs. asynchronous
10
Blocking vs. Non-Blocking I/OBlocking – ứng dụng dừng lại cho đến khi số count bytes được đọc hoặc ghi
Ví dụ: Trong thiết bị mạng, nếu muốn ghi 1000 bytes, thì HĐH ghi tất cả các byte cho đến khi ghi hoàn tất.Nếu thiết bị không thể thực hiện lệnh ghi được (ví dụ hỏng dâynối), làm sao? Thì sẽ kết thúc và trả về số bytes đã ghi được.
Nonblocking – HĐH đọc và ghi các bytes khi có thể, không cần ứng dụng phải dừng lại.
11
Buffered vs. Unbuffered I/OTrong trường hợp buffer dữ liệu của thiết bị quá nhỏ, đểkhông phải chờ quá lâu khi thực hiện IO
buffered I/O cho phép kernel copy lại dữ liệu
Bên write(): cho phép ứng dụng tiếp tục ghi dữ liệuBên read(): khi thiết bị báo có dự liệu đến, kernel chép dữ liệuvào buffer. Khi tiến trình gọi read(), kernel chỉ việc copy từbuffer.
Khuyết điểm buffered I/O?Thêm chi phí để thực hiện copyChậm trễ việc gửi dữ liệu
12
Synchronous vs. Asynchronous I/OSynchronous I/O: các xử lý khác của ứng dụng của ngườidùng cuối sẽ dừng lại để chờ các thao tác xuất nhập củanó hoàn tất.Asynchronous I/O: các xử lý khác của ứng dụng có thểthực thi song song với các thao tác xuất nhập
13
Các loại thiết bị xuất nhậpHầu hết HĐH chia thành 3 nhóm thiết bị:
Thiết bị đọc theo kí tự (character device)Dùng cho các thiết bị tuần tự (v.d. USB port, bàn phím, modem)
Thiết bị mạngDùng cho các card mạng (v.d. Ethernet card)
Thiết bị theo block:Dùng cho các bộ lưu trữ lớn (v.d.ổ đĩa và CDROM)Phương thức read/write sẽ khác nhau với từng loại
14
Thiết bị xuất nhập theo kí tựHĐH đọc và ghi theo chuỗi các byte
System call write() sẽ ghi từng byte ra thiết bịSystem call read() sẽ đọc từng byte ra thiết bị
Không có điều khiển tỉ lệ read/write, bên gửi có thể gọisystem
call write() 1 lần 1000 bytes, bên nhận có thể gọi read 1000 lần,mỗi lần đọc 1 byte.
15
Thiết bị mạngUnix và Windows đều dùng khái niệm socket để cho việctruyền, nhận dữ liệu trên mạng
Mỗi write() hoặc là gửi cả block, kích thước của block có giớihạn tùy hệ thống.Bên nhận, read() trả về tất cả các byte trong block.
16
Thiết bị đọc theo blockHĐH đọc và ghi thiết bị theo các blockMỗi block kích thước xác định (thông thường 1KB - 8KB)Người dùng chỉ có thể read/write các block cùng kích thướcKhông giống thiết bị khác, thiết bị đọc ghi theo block hỗ trợrandom accessChúng ta có thể đọc/ghi bất cứ block nào trên thiết bị, không cầnphải ‘đọc tất cả các bytes’ trướcLàm sao xác định vị trí của block thứ n?
17
Con trỏ fileMột con trỏ file được gán vào một file đang mở, nếu như thiết bịđang mở thuộc loại đọc theo blockCon trỏ file sẽ trỏ tới vị trí hiện hành trên file cho lệnh đọc/ghi kếtiếpĐơn vị của con trỏ file là byte, chứ không phải blockDi chuyển con trỏ file:
absoluteOffset = lseek(fileHandle, offset, whence);whence xác định vị trí cột mốc, đầu file, cuối file…Vị trí hiện hành được trả về, <0 là lỗiVị trí hiện hành là 1 số nguyên tính theo byte, có thể là bội sốcủa block.
18
Thiết bị xuất nhậpMàn hình: Thiết bị xuấtchuẩn:
Ký tự hay đồ hoạKhả năng hiển thị:
Độ phân giải: Ví dụ : 25 x 80 ký tựhay 800 x 600 x 256 màu.
Độ làm tươi:30-60 lần/giây.
19
Thiết bị xuất nhậpBàn phím: Thiết bị nhập chuẩn
Bố trí theo cấu trúc “QWERTY”
Tốc độ nhập dữ liệu chậm (<10 ký tự/giây)
Thiết bị trỏ/định vị: Thiết bị nhập chuẩnChuột (quang, cơ)TrackballJoystick
Tốc độ nhập dữ liệu chậm (vài trăm bytes/giây)
20
Thiết bị xuất nhậpMáy in
Máy in dòng, máy in điểm, máy in phun, in laser.Tốc độ đẩy dữ liệu chậmHướng ký tự
Máy quétSố hoá các tài liệu in thành các dữ liệu số dướidạng ảnh bitmap.Tốc độ quét chậm
21
Thiết bị xuất nhậpĐĩa từ : Đĩa mềm (floppy disk), đĩa cứng (hard disk):
Thiết bị xuất nhập theo khối (sector).Dung lượng tuỳ thuộc vào số head,track,sector.Tốc độ truy cập phụ thuộc vào tốc độ quay và mật độ dữ liệutrên đĩa.
Băng từ:Thiết bị truy cập tuần tự dung lượng lớn.Tốc độ truy cập ~2Mb/s
CDROM/DVD:Tốc độ truy cập nhanh.Dung lượng ngày càng lớn và giá thành ngày càng rẻ.
22
Thiết bị xuất nhậpThiết bị giao tiếp mạng
Card mạngCài đặt các giao thức mạng khác nhau để hỗ trợ cho quátrình truyền nhận các luồng/gói dữ liệu.
ModemChuyển đổi giữa tín hiệu tuần tự và tín hiệu số trên đườngtruyền thoại.Luồng dữ liệu truyền là các dãy bít được gom nhóm thànhcác ký tự.
Đồng hồ hệ thống (clock) và bộ định giờ (timer)Cung cấp thời gian hệ thống để giúp đồng bộ hoá cáchoạt động trên máy tính.
23
Bộ điều khiển thiết bịMỗi đơn vị nhập xuất thường gồm 2 thành phần:
Thành phần cơ: Bản thân thiết bịThành phần điện: bộ điều khiển (controller)
Bộ điều khiển:Chức năng: Trung gian giao tiếp giữa thiết bị và HĐH.Phương tiện giao tiếp: Thông qua bus - hệ thống mạch truyềndẫn.Công việc:
Nhận lệnh từ HĐH để thực hiện và báo hiệu cho HĐH khi tácvụ hoàn tất.Chuyển đổi dãy bit thành các byte và đặt chúng vào trong bộđệm (buffer) của bộ điều khiển.
24
Các thiết bị xuất nhập và bus hệ thống
25
Địa chỉ giao tiếp thiết bịHĐH giao tiếp với thiết bị thông qua địa chỉ xuất nhậpcủa bộ điều khiển:
26
Mô hình phân lớp trong quản lý xuất nhậpHệ thống xuất nhập được tổ chức theo từng lớp, mỗi lớp có 1 chứcnăng nhất định và có sự hỗ trợ liên hoàn lẫn nhau:
27
Phần mềm độc lập thiết bịChức năng:
Tạo ra giao tiếp chung cho tất cả các thiết bị.Bảo vệ thiết bịCung cấp khối dữ liệu độc lập thiết bịCung cấp bộ đệm (buffer) để hỗ trợ cho quá trìnhđồng bộ hoá hoạt động của hệ thống.Định vị trí lưu trữ trên các khối thiết bị.Cấp phát và giải phóng thiết bị.Thông báo lỗi cho người dùng (nếu có).
28
Trình điều khiển thiết bịChức năng:
Nhận yêu cầu từ phía lớp phần mềm độc lập thiết bị.Chuyển đổi yêu cầu trừu tượng này thành cụ thể.Điều phối yêu cầu này cho bộ điều khiển thiết bị (device controller).Giám sát thực hiện yêu cầu.
Ví dụ:HĐH muốn đọc tập tin io.sys trên đĩa ở thư mục C:\.Trình điều khiển đĩa phải hiểu là cần đọc khối nào.Trình điều khiển đĩa chuyển yêu cầu này cho bộ điều khiển đĩa.Bộ điều khiển đĩa phải kiểm tra hoạt động của motor đĩa, xácđịnh đầu đọc đã đúng vị trí chưa.
29
Trình điều khiển thiết bị
30
Bộ kiểm soát ngắt (interrupt handler)Tương tác giữa HĐH và các thiết bị phần cứng đều được thực hiệnthông qua cơ chế ngắt (interrupt).Bộ kiểm soát ngắt sẽ tiếp nhận các ngắt từ HĐH và ứng dụng củangười dùng cuối.Dựa trên bảng “Interrupt vector” để phân phối các ngắt đến các bộđiều khiển thiết bị tương ứng.Quản lý và giám sát quá trình thực hiện ngắt.Nhận ngắt thông báo quá trình xuất nhập hoàn tất hoặc có lỗi xảyra trong quá trình xuất nhập từ bộ điều khiển thiết bị để chuyển lêncho HĐH.
31
Bộ kiểm soát ngắt (interrupt handler)
32
Cơ chế truy cập bộ nhớ trực tiếpDMA (Direct Memory Access)
Xét quá trình đọc đĩa không có DMA:HĐH chuyển yêu cầu đọc đĩa cho bộ điều khiển đĩa.Bộ điều khiển đọc tuần tự các khối trên đĩa.Đọc từng bit cho đến khi các khối được đưa vào bộ đệm củabộ điều khiển đĩa.Bộ điều khiển đĩa tạo ngắt để báo qua CPU biết quá trình đọcđĩa hoàn tất.CPU lần lượt lấy từng byte dữ liệu từ bộ đệm của bộ điềukhiển đĩa để chuyển về bộ nhớ chính để thao tác.
Nhận xét:Lãng phí thời gian xử lý của CPU để chuyển dữ liệu từ bộ đệmcủa bộ điều khiển đĩa về bộ nhớ chính
33
Cơ chế DMACơ chế DMA giúp CPU không bị lãng phí bằng cách:
HĐH gởi cho bộ điều khiển đĩa các thông số gồm: các khối cầnđọc + vị trí lưu trữ các khối này bên trong bộ nhớ chính (địa chỉDMA) + số byte cần đọc.Bộ điều khiển đĩa đọc các khối cần thiết lưu vào trong bộ đệmcủa nó.Sau khi đọc xong, bộ điều khiển chuyển lần lượt từng byte từbộ đệm của nó về địa chỉ DMA – nơi cần lưu trữ dữ liệu cầnthiết bên trong bộ nhớ chính.Bộ điều khiển đĩa tạo 1 ngắt để thông báo cho CPU biết quátrình chuyển dữ liệu đã hoàn tất.
34
Cơ chế DMA
35
Quản lý lỗi & bảo vệ xuất nhập thiết bịQuá trình xử lý của người dùng cuối hay HĐH có thể vôtình hay cố ý thực hiện các lệnh/thao tác xuất nhập bấthợp pháp gây hại cho hệ thống và thiết bị.Cần định nghĩa trước và gán đặc quyền cho các lệnh xuấtnhập của hệ thống dưới dạng các lời gọi hệ thống(system call).Giám sát quá trình xuất nhập của người dùng cuối.Tất cả quá trình xuất nhập của ƯD phải được thực hiệnthông qua các lời gọi hệ thống.
36
Quản lý lỗi & bảo vệ xuất nhập thiết bịKhi gặp lỗi trong quá trình xuất nhập, các bộ điều khiểnthiết bị sẽ trả về cho HĐH mã lỗi tương ứngHĐH diễn dịch mã lỗi trả về để có phương án giải quyếtthích hợp.HĐH cũng diễn dịch và lưu vào nhật ký hệ thống (system log) các lỗi tương ứng để giúp người quản trị hệ thốnggiám sát lỗi và phục hồi.
1
Chương 3: Hệ thống quản lý tập tinNội dung chương:
Các khái niệm cơ bản về hệ thống tập tinCài đặt hệ thống quản lý tập tinMô hình tổ chức và quản lý tập tin của các HĐH thông dụng.Truy xuất hệ thống quản lý tập tin.
2
Hệ thống lưu trữ trong máy tínhBộ nhớ trong
RAM, ROM, Register, CacheBộ nhớ ngoài
HD (Hard Disk)FD (Floppy Disk)CD (Compact Disk)DVD (Digital Video Disk)USB disk…
cache
Bộ nhớ chính
Bộ nhớ phụ(đĩa)
Bộ nhớ thứ cấp(băng từ) Tố
cđộ
Dun
g lượn
g
Giá
thàn
h
3
Các khái niệm cơ bảnRAM không có khả năng lưu trữ dữ liệu lâu dài.Máy tính phải sử dụng các thiết bị có khả nănglưu trữ lâu dài vì:
Chứa lượng thông tin lớn.Thông tin được lưu trữ trước khi xử lý.Nhiều ứng dụng muốn truy cập cùng lúc.
Phải sử dụng các thiết bị lưu trữ ngoài gọi là bộnhớ ngoài với các đơn vị lưu trữ được tổ chứcthành:
Tập tinThư mục
4
Tổ chức dữ liệu trên đĩa từCấu trúc vật lý của đĩa từ:
Hình tròn, gồm nhiều mặt gọi là head.Mỗi mặt có nhiều đường tròn đồng tâm gọilà track hay cylinder.Trên các đường tròn (track) được chiathành các cung tròn gọi là sector.Mỗi cung tròn chứa 4096 điểm từ (~ 4096 bit = 512 bytes).Mỗi mặt có 1 đầu đọc để đọc ghi dữ liệuMỗi lần đọc/ghi ít nhất 1 cung tròn (512B).
5
Cấu trúc đĩa từ
Head 0 Head 2
6
Cấu trúc đĩa từ
read-write head
track
sectors
cylinder
7
Cấu trúc đĩa từ
8
Tổ chức dữ liệu trên đĩa từ (tt)Mỗi lần đọc hay ghi đĩa có thể thực hiện N sector liên tiếp (N>=1).Vị trí của mỗi sector trong đĩa được thể hiện bằng3 tham số : {sector, track, head}.Head được đánh số từ trên xuống bắt đầu từ 0.Track được đánh số từ ngoài vào bắt đầu từ 0.Sector được đánh số bắt đầu từ 1 theo chiềungược với chiều quay của đĩa.
9
Tổ chức đĩa logic
Thay vì phải dùng đến 3 tham số dựa trên cấu trúc đĩavật lý nên khái niệm đĩa logic được đưa ra để dễ thao tácvà tính toán hơn.Đĩa logic là một dãy sector được đánh số bắt đầu từ 0.Mỗi sector trên đĩa logic tương ứng với 1 sector duy nhấttrên đĩa vật lý sao cho khi truy xuất sector K thì khi truyxuất tiếp sang sector K+1 là nhanh nhất.
N-143210
……
10
Dung lượng đĩaKích thước đĩa phụ thuộc vào các yếu tố sau:
Số mặt từ (platter)Số track trên mỗi mặt từSố sector trên mỗi trackKích thước (byte) trên mỗi track.
11
Ví dụ cách tổ chức đĩa mềmCác thông số trên đĩa mềm 1.44MB:Đĩa có 2 head, 80 track/head, 18 sector/track.Dung lượng đĩa = 2 head/disk *80 track/head *18 sector/track = 2880 sector/disk = 0.5 KB/sector * 2880 sector/disk = 1440 KB/disk (~ 1.4MB)Các sector logic có chỉ số từ 0 đến 2879 và tương ứngvới các sector vật lý như sau:
Sector 0..17 tương ứng với sector vật lý (1,0,0)..(18,0,0)Sector 18..35 tương ứng với sector vật lý (1,0,1)..(18,0,1)…Sector 2879 tương ứng với sector vật lý (18,79,1).
12
Mặt đĩa
Tay quay
Đầu đọc
Thời gian truy cập đĩa
Disk access time =Seek Time+ Latency Time+ Transfer Time
13
Các thuật toán đọc đĩaFirst-Come-First-Serve (FCFS)SCAN, C-SCANShortest Seek Time First (SSTF)Look
14
First Come First Serve (FCFS)Phục vụ theo thứ tự yêu cầuĐơn giản nhưng không đáp ứng tốt dịch vụ
time
cylinder number1 5 10 15 20 25
12
Các khối cần đọc (đầu đọc hiện tại tại vị trí 11):14 2 7 21 8 24
schedulingqueue
248
217
2
14
12
15
SCANDi chuyển đầu đọc về 1 phía của đĩa đến block xa nhất sauđó di chuyển về phía kia.Còn gọi là thuật toán thang máy.tim
e
cylinder number1 5 10 15 20 25
12 14 2 7 21 8 24
schedulingqueue
24821721412Các khối cần đọc (đầu đọc hiện tại tại vị trí 11):
16
SCAN vs. FCFSTrongtrường hợpnày, SCAN tốt hơnFCFS vìhạn chế sựdi chuyểncủa đầu đọcđĩa
cylinder number1 5 10 15 20 25
time
time
17
C-SCANNguyên tắc:
Tương tự thuật toán SCAN.Chỉ khác khi di chuyển đến 1 đầu của đĩa thì trở về vịtrí bắt đầu của đĩa.
18
C-SCAN
19
LOOKNhận xét:
Hai thuật toán lập lịch SCAN và C-SCAN luôn luôndi chuyển đầu đọc của đĩa từ đầu này sang đầu kianhưng thông thường thì đầu đọc chỉ di chuyển đếnkhối xa nhất ở mỗi hướng chứ không đến cuối.
Nguyên tắc:Giống SCAN và C-SCAN nhưng chỉ di chuyển đầuđọc đến khống xa nhất chứ không đến cuối.
20
LOOK
21
SSTFSSTF = Shortest Seek Time FirstNguyên tắc:
Di chuyển đầu đọc đến các khối cần thiết theo vị trílần lượt gần với vị trí hiện hành của đầu đọc nhất
22
SSTF
23
Lập trình tương tác với đĩaCác truy xuất đĩa trực tiếp trong C:Đọc nội dung sector trên đĩa logic: hàm absread.Ghi nội dung vào sector logic: abswrite.Thực hiện thao tác trên đĩa vật lý: biosdisk.
Cú pháp:int absread(int drive, int nsects, long lsect, void *buffer).int abswrite (int drive, int nsects, long lsect, void *buffer);int biosdisk (int cmd, int drive, int head, int track, intsector, int nsects, void *buffer);
24
Tập tin (1/4)Tập tin (file) là đơn vị lưu trữ thông tin trên bộnhớ ngoài.Thông tin chứa trong tập tin là bền vững (khôngbị mất đi khi bị mất điện).Tên tập tin:
Là cơ chế trừu tượng để quản lý tập tin.Có thể phân biệt chữ hoa và thường (tuỳ HĐH cụ thể)Hỗ trợ tên tập tin theo định dạng 8.3 (gồm tên và phầnmở rộng) hay tên dài (Long File Name). Ví dụ: baitap.cpp hay “bai tap lap trinh.cpp”
25
Tập tin (2/4)Các thuộc tính của tập tin:
Người sở hữu/nhóm sở hữuChỉ đọc (Read-only)Ẩn (Hidden)Hệ thống (System)Lưu trữ (Archive)Ngày giờ tạo.Ngày giờ truy cập cuối cùngNgày giờ thay đổi cuối cùngKích thước
26
Tập tin (3/4)
TạoXoáMởĐóngĐọcGhi
Các thao tác trên tập tin:ThêmTìmLấy thuộc tínhThiết lập thuộc tínhĐổi tên
27
Tập tin (4/4)Các loại tập tin:
Tập tin văn bản (text file): chứa các dòng văn bản, cuối dùng có ký hiệu kết thúc dòng (end line)Tập tin nhị phân (binary file): là tập tin có cấu trúc.
Các truy xuất trên tập tin:Tuần tự: Phải đọc từ đầu tập tin đến vị trí mong muốn.Ngẫu nhiên: Có thể di chuyển nhanh (SEEK) đếnđúng vị trí cần đọc.
28
Khối điều khiển tập tin
29
Thư mụcGiúp cho việc quản lý các tập tin dễ dàng hơn. Giúp định vị các tập tin 1 cách nhanh chóng.Gom nhóm các tập tin vào trong các thư mục theoý nghĩa và mục đích sử dụng của người dùng.
root
bob sue
www fun3013
30
Thư mục
Ví dụ 1 cấu trúc cây thư mục phân cấp
31
Thư mục - Đường dẫn (Path)Dùng để xác định vị trí lưu tập tin khi hệ thốngđược tổ chức thành cây thư mục:Đường dẫn tuyệt đối:
Ví dụ: “C:\Downloads\software\baigiang.doc”
Đường dẫn tương đối:Ví dụ: “software\baigiang.doc” nếu thư mục hiện hành là“C:\Downloads\”
Các thư mục đặc biệt:Thư mục hiện hành (.)Thư mục cha (..)
32
Thư mụcCác thao tác trên thư mục:
Tạo <> Xoá <> Đổi tênMở <> ĐóngTìm kiếm <> Liệt kêLiên kết: Cho phép 1 tập tin có thể xuất hiện trongnhiều thư mục khác nhau.Bỏ liên kết: Nếu tập tin chỉ có 1 liên kết với 1 thưmục, nó sẽ bị loại bỏ hoàn toàn, ngược lại nó sẽ bịgiảm chỉ số liên kết
33
Cấp phát vùng nhớ chứa tập tinCác khối (block) đĩa sẽ được cấp phát để lưu trữnội dung tập tin theo các cơ chế cấp phát:
Cấp phát liên tụcCấp phát bằng danh sách liên kếtCấp phát bằng danh sách liên kết sử dụng chỉ mục(index).Cấp phát bằng I-node
34
Cấp phát liên tụcCấp phát 1 số block liên tục trên đĩa để lưu trữ nộidung tập tinNhận xét:Đơn giản: chỉ cần quản lý số hiệu khối bắt đầu và tổngsố block chiếm bởi tập tin.Truy cập nội dung tập tin nhanh chóng vì các block nằm kề nhau.Gây lãng phí bộ nhớ.Khó khăn khi tập tin mở rộng kích thước.
35
Cấp phát liên tục (tt)
36
Cấp phát bằng danh sách liên kếtNội dung tập tin được lưu trữ ở những block không cần liên tục. Các block này được xâu chuỗitạo thành 1 danh sách liên kết để quản lý.Nhận xét:Đơn giản: Chỉ cần quản lý block bắt đầu.Tận dụng hiệu quả không gian đĩa.Truy cập tập tin lâu hơn vì đầu đọc phải di chuyểnnhiều giữa các khối không liên tiếp.Khối dữ liệu bị thu hẹp lại vì mỗi khối phải dùng 1 phần để lưu phần liên kết đến khối kế tiếp.
37
Cấp phát bằng danh sách liên kết (tt)
38
Cấp phát bằng danh sách liên kết sửdụng chỉ mục (index)
Tương tự như phương pháp cấp phát bằng danhsách liên kết nhưng thay vì sử dụng 1 phần nhỏcủa mỗi block để lưu chuỗi liên kết thì sử dụng 1 block riêng để lưu toàn bộ chuỗi liên kết.
Các block chỉ chứa dữ liệu.
39
Cấp phát bằng danh sách liên kết sử dụng chỉmục (index) (tt)
40
Cấp phát bằng I-nodeMỗi I-node gồm 2 phần:
Các thuộc tính của tập tinĐịa chỉ của các khối dữ liệu: gồm 13 phần tử
10 phần tử đầu tiên: Địa chỉ của các khối dữ liệu trực tiếp.Phần tử thứ 11: Địa chỉ của các khối dữ liệu gián tiếp đơn(single indirect): gồm 1 khối trỏ đến 210 phần tử chứa địachỉ của các khối dữ liệu.Phần tử thứ 12: Địa chỉ của các khối dữ liệu gián tiếp đôi(double indirect): chứa địa chỉ của các khối single indirect.Phần tử thứ 13: Địa chỉ của các khối dữ liệu gián tiếp ba(triple indirect)
41
Cấp phát bằng I-node (tt)
42
Cài đặt hệ thống tập tin của các HĐH cụ thể
MS-DOSWindowsUnix
43
Tổ chức quản lý hệ thống tập tin trên đĩa từ
0 1 2 3 …..
Đĩa từ bao gồm danh sách các sector có kích thước 512Bytes
Kích thước đĩa (bytes) = (tổng số sector) x (512 bytes/sector)
44
Phân vùng đĩa (Disk Partition)Toàn bộ vùng lưu trữ của đĩa được phân thành cácvùng logic không chồng lên nhau gọi là phânvùng đĩa.
Partition #1 Partition #2 Partition #3unused
45
Master Boot RecordMột phần nhỏ đầu tiên của đĩa được dành riêng cho cácthông tin quản lý đĩa.
Sector logic thứ 0 của đĩa (CHS = 001) là Master Boot Record chứa thông tin mô tả cấu trúc vật lý của đĩa vàthông tin về các phân vùng logic của đĩa.
MBR
0 1 2 …
partition #1
46
MBRThông tin chứa trong MBR bao gồm:Đoạn chương trình để giúp khởi động hệ thốngBảng mô tả thông tin các phân vùng logicThông tin nhận diện MBR
signature (2 bytes)
Partition Table (64 bytes)
Bootstrap Loader(446 bytes)512
bytes
47
Bảng mô tả các phân vùngMBR có thể mô tả cho tối đa 4 phân vùng logic được chia trên đĩa trong đó thường có 1 phânvùng ở trạng thái “Active”
Starting sectorID-number
Partition length(in sectors)
STATUS
TYPE16
bytes
Some fields contain ‘obsolete’ information
48
Primary Partition vs Extended Partition
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
MBRReserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Partition Table
Primary Partition Extended Partition
49
Phân vùng “active” là phân vùng chứa HĐH sẽđược nạp mặc định khi máy tính khởi động.
Bảng mô tả các phân vùng (tt)
50
Trường TYPE-ID trong bảng mô tả phân vùng
Ý nghĩa của trường Type-ID trong mỗi phân vùngTYPE-ID = 0x07 : Phân vùng chứa “Windows”TYPE-ID = 0x83 : Phân vùng chứa “Linux”TYPE-ID = 0x00 : Phân vùng không sử dụng.
51
Quá trình khởi động hệ thống và nạp HĐH dựa trên thông tin các phân vùng
B1: POST (Power-On Self-Test)B2: Tải MBR để đọc thông tin bảng phân vùng.B3: Tìm phân vùng “active”.B4: Chuyển quyền điều khiển về cho đoạn mãchương trình nằm trong Boot Record của phânvùng “active”B5: Tải HĐH tại phân vùng “active”.
52
Tổ chức tập tin trên Windows: FAT (12,16,32)
53
Tổ chức tập tin trên Windows: FAT (12,16,32) (tt)
FAT: File Allocation Table
Các phiên bản của FAT: FAT12, FAT16, FAT3212,16,32: Số bít dùng để đánh STT các khối (212,216,232)
FAT12: 212 (khối) x 512 bytes/khối = 2MB
FAT16: 216 (khối) x 512 bytes/khối = 32MB
FAT32: 232 (khối) x 512 bytes/khối = 4GBBoot
sector FAT1 FAT2(backup)
Rootdirectory Other directories and files
…000000030004FFFF00060008FFFFFFFF0000
…
empty File1 File1empty File2File1
File3File2 emptyFile2 empty empty
emptyempty empty empty empty empty
0000
0001
0002
0003
0004
0005
0006
0007
0008
0009
0000 0001 0002 0003 0004 0005
0006 0007 0008 0009 0010 0011
0012 0013 0014 0015 0016 0017
54
Tổ chức tập tin trên Windows: NTFSNhóm các sector liên tiếp nhau lại để tạo thànhcác Cluster.
55
Tổ chức tập tin trên Windows: NTFSNTFS không sử dụng khái niệm FAT và Root Dir để quản lý các tập tin lưu trên đĩa mà sử dụngkhái nhiệm MFT (Master File Table).MFT là 1 Metadata file bao gồm 1 danh sách cáctrường chứa thông tin về mỗi tập tin lưu trữ trênđĩa.Thông tin trong MFT có thể giúp thiết lập cácthuộc tính bảo vệ, phục hồi, tìm kiếm, thiết lậpquota… cho từng tập tin, thư mục trên đĩa.
56
Tổ chức tập tin trên Unix/Linux: I-node
modeowner
…Direct block 0Direct block 1
…Direct block 10Direct block 11Single indirectDouble indirectTriple indirect
Data blockData block
Data blockData block
index
Data blockData block
Data blockData block
index
index
indexindex
indexindex
Data blockData block
Data blockData block
index
index Data block
I-node
Data block
10/20/2007 Trần Hạnh Nhi 1
Chöông 4: Quaûn lyù tieán trình
Moâ hình Tieán trìnhTraïng thaùi tieán trìnhThoâng tin quaûn lyù tieán trìnhQuaù trình ñieàu phoái tieán trìnhCaùc thuaät toaùn ñieàu phoái
10/20/2007 Trần Hạnh Nhi 2
Khaùi nieäm : Ña nhieäm vaø ña chöông ???
Vì sao muoán xöû lyù ñoàng thôøi nhieàu coâng vieäc treân maùy tính ?
IO CPU IOCPUJob 1
CPU
Job 1
CPU
IO
IO
CPU
IO
CPUJob 2
CPU
CPU
Xöû lyù ñoàng thôøi ñeå taêng hieäu suaát söû duïng CPU
10/20/2007 Trần Hạnh Nhi 3
Vì sao muoán xöû lyù ñoàng thôøi nhieàu coâng vieäc treân maùy tính ?
Xöû lyù ñoàng thôøi ñeå taêng toác ñoä xöû lyù
Khaùi nieäm : Ña nhieäm vaø ña chöông ???
Job : kq = a*b + c*d;
CPU #1 CPU #1 CPU #2x = a * b y = c * d
kq = x+y
x = a * b 1
y = c *d 2
kq = x+y 3
Xöù lyù tuaàn töï Xöûù lyù ñoàng haønh
10/20/2007 Trần Hạnh Nhi 4
Ña nhieäm vaø ña chöông
Multitasking (ña nhieäm) : cho pheùp nhieàu taùc vuï/ coâng vieäcñöôïc xöû lyù ñoàng thôøi
Ngöôøi duøng luoân mong muoán 1 HÑH ña nhieämNhöng: Maùy tính thöôøng chæ coù 1 CPU?
Multiprogramming (ña chöông) : kyõ thuaät cho pheùp nhieàuchöông trình ñöôïc thöïc hieän ñoàng thôøi (treân 1 CPU)
Giaû laäp nhieàu CPU aûo töø 1 CPU thaät ñeå cho pheùp thi haønh nhieàuchöông trình ñoàng thôøi. AÛo hoaù baèng caùch naøo ? Xaây döïng caùc thuaät toaùn ñeå luaân chuyeånCPU giöõa caùc chöông trình öùng duïng.
10/20/2007 Trần Hạnh Nhi 5
Xöû lyù ñoàng haønh, nhöõng khoù khaên ?
HÑH : “ Giaûi quyeát nhieàu coâng vieäc ñoàng thôøi,ñaâu coù deã ! “
- Taøi nguyeân giôùihaïn, öùng duïng“voâ haïn”
- Nhieàu hoaït ñoängñan xen
??? Phaân chia taøinguyeân ?
??? Chia seû taøinguyeân ?
??? Baûo veä?
ExcelVisual C++
CDplayerWinword
10/20/2007 Trần Hạnh Nhi 6
Giaûi phaùp
HÑH : “ Ai cuõng coù phaàn khi ñeán löôït maø ! ”
-“Chia ñeå trò”, coâlaäp caùc hoaïtñoäng.
- Moãi thôøi ñieåmchæ giaûi quyeát 1 yeâu caàu.
- Aûo hoaù taøinguyeân : bieán ítthaønh nhieàu
Winword
CDPlayer
Visual C ++
Excel
10/20/2007 Trần Hạnh Nhi 7
Giaûi phaùp
CPU
10/20/2007 Trần Hạnh Nhi 8
Khaùi nieäm tieán trình (Process)
Tieán trình laø moät chöông trình ñang trong quaù trình thöïc hieänMoãi tieán trình sôû höõu
Moät CPU (aûo) rieângMoät khoâng gian nhôù rieângChieám giöõ 1 soá taøi nguyeân cuûa heä thoáng
Vd: Moät chöông trình Word coù theå ñöôïc chaïy 2 laàn seõ taïo ra2 tieán trình khaùc nhau:
Microsoft Word – [Bai tap1.doc]Microsoft Word – [Bai tap2.doc]
10/20/2007 Trần Hạnh Nhi 9
Hai phaàn cuûa tieán trình
int a;
int a;
P1
P2
Doøng xöû lyù
Khoâng gian ñòa chæ
10/20/2007 Trần Hạnh Nhi 10
Traïng thaùi tieán trình ?
Taïi 1 thôøi ñieåm, tieán trình ôû moät trong caùc traïng thaùi sau:
ready☺ Rs
CPU
running☺ Rs☺ CPU
blockedRsCPU
Nhaän CPU
Traû CPU
Chôø RNhaän R
10/20/2007 Trần Hạnh Nhi 11
Khoái quaûn lyù tieán trình - PCB (Process Control Block)
Định danh (Process ID)Trạng thaùi tiến trìnhNgữ cảnh tiến trình
Trạng thaùi CPUBộ xử lyù (cho maùy nhiều CPU)Bộ nhớ chínhTaøi nguyeân sử dụng/tạo lập
Thoâng tin giao tiếpTiến trình cha, tiến trình conĐộ ưu tieâên
Thoâng tin thống keâ
pidState
(State, details)Context
(IP, Mem, Files…)
Scheduling statistic
Relatives
( Dad, children)
Process control BlockPCB
10/20/2007 Trần Hạnh Nhi 12
Ví duï: Khoái quaûn lyù tieán trình cuûa HÑH MachOS
typedef struct machpcb { char mpcb_frame[REGOFF]; struct regs mpcb_regs; // user's saved registers struct rwindow mpcb_wbuf[MAXWIN]; //user window save bufferchar *mpcb_spbuf[MAXWIN]; //sp's for each wbufint mpcb_wbcnt; //number of saved windows in pcb_wbufstruct v9_fpu *mpcb_fpu; // fpu state struct fq mpcb_fpu_q[MAXFPQ]; // fpu exception queue int mpcb_flags; // various state flags int mpcb_wocnt; // window overflow count int mpcb_wucnt; // window underflow countkthread_t *mpcb_thread; // associated thread } machpcb_t;
10/20/2007 Trần Hạnh Nhi 13
Caùc thao taùc treân tieán trình
Taïo laäp tieán trìnhKeát thuùc tieán trìnhThay ñoåi traïng thaùi tieán trình :
Assign()Block() Awake()Suspend()Resume()
10/20/2007 Trần Hạnh Nhi 14
Taïo laäp tieán trình
Caùc tình huoáng :Khôûi ñoäng batch jobUser logs onKích hoaït 1 service (print...)Process goïi haøm taïo moät tieán trình khaùc
Caùc tieán trình coù theå taïo tieán trình con, hình thaønh caây tieántrình trong heä thoángCaùc tieán trình môùi ñöôïc taïo coù theå thöøa höôûng taøi nguyeân töøcha, hay ñöôïc caáp taøi nguyeân môùi
10/20/2007 Trần Hạnh Nhi 15
Keát thuùc tieán trình
Tình huoáng :Tieán trình xöû lyù xong leänh cuoái cuøng hay goïi exit ()Keát thuùc Batch job , Halt instructionUser logs offDo loãi chöông trình
Moät tieán trình coù theå keát thuùc 1 tieán trình khaùc neáu coù ID (ñònh danh) cuûa tieán trình kia.
Ví duï: kill –-s SIGKILL 1234: huyû tieán trình coù ID laø 1234
10/20/2007 Trần Hạnh Nhi 16
Moâ hình ña tieán trình (MultiProcesses)
Heä thoáng laø moät taäp caùc tieán trình hoaït ñoäng ñoàng thôøiCaùc tieán trình ñoäc laäp vôùi nhau => khoâng coù söï trao ñoåithoâng tin hieån nhieân..
winwordVisual C CDplayer
Excel
OS
10/20/2007 Trần Hạnh Nhi 17
Ví duï moâ hình ña tieán trình
Giôø thi lyù thuyeát moân Heä Ñieàu haønhMoãi sinh vieân laø moät tieán trình :
Cuøng laøm baøi => Hoaït ñoäng ñoàng haønhCoù baøi thi , buùt, giaáy…rieâng => Taøi nguyeân rieâng bieätÑoäc laäp => Khoâng trao ñoåi (veà nguyeân taéc)
Thöïc haønh moân Heä Ñieàu haønh2 sinh vieân/nhoùmHôïp taùc ñoàng haønhNhu caàu trao ñoåiDuøng taøi nguyeân chung
10/20/2007 Trần Hạnh Nhi 18
Moâ hình ña tieåu trình (MultiThreads)
Nhieàu tình huoáng caàn coù nhieàu doøng xöû lyù ñoàng thôøi cuønghoaït ñoäng trong moät khoâng gian ñòa chæ => cuøng chia seû taøinguyeân (server, OS, caùc chöông trình tính toaùn song song : nhaân ma traän…)
Khaùi nieäm môùi : tieåu trình (thread)
alta vista
10/20/2007 Trần Hạnh Nhi 19
Ví duï Moâ hình ña tieåu trình
Thöïc haønh moân Heä Ñieàu haønhMoãi nhoùm 2 sinh vieân laø moät tieán trình :Moãi sinh vieân laø moät tieåu trình
Cuøng laøm baøi => Hoaït ñoäng ñoàng haønhCoùù baøi thöïc haønh chung => Taøi nguyeân chungTrao ñoåi vôùi nhau
10/20/2007 Trần Hạnh Nhi 20
Khaùc bieät giöõa Tieåu trình & Tieán trình
Tieåu trình : 1 doøng xöû lyùTieán trình :
1 khoâng gian ñòa chæ1 hoaëc nhieàu tieåu trình
Caùc tieán trình laø ñoäc laäpCaùc tieåu trình trong cuøng 1 tieán trình khoâng coù söï baûo veälaãn nhau (caàn thieát ? ).
P1
int a;
T1 T2T3
10/20/2007 Trần Hạnh Nhi 21
Tieåu trình haït nhaân (Kernel thread)
Khaùi nieäm tieåu trình ñöôïc xaây döïng beân trong haït nhaânÑôn vò xöû lyù laø tieåu trìnhVí duï :
Windows 95/98/NT/2000Solaris, Tru64 UNIX, BeOS, Linux
T1 T2
Kernel Thread
System call
User mode
Kernel mode
10/20/2007 Trần Hạnh Nhi 22
Phaân chia CPU ?
1 CPU vaät lyù : laøm theá naøo ñeå taïo aûo giaùc moãi tieán trình sôûhöõu CPU rieâng cuûa mình ?Luaân chuyeån CPU giöõa caùc tieán trình
2 thaønh phaàn ñaûm nhieäm vai troø ñieàu phoái:Scheduler choïn 1 tieán trìnhDispatcher chuyeån CPU cho tieán trình ñöôïc choïn CPU
10/20/2007 Trần Hạnh Nhi 23
Caùc danh saùch tieán trình
Ready List P1 P4 P5
Waiting ListsR1 P7P2
P10P3
P6
R2
R3
10/20/2007 Trần Hạnh Nhi 24
Scheduler - Nhieäm vuï
Ra quyeát ñònh choïn moät tieán trình ñeå caáp phaùt CPU :ÖÙng cöû vieân = {Caùc tieán trình ready list}0 tieán trình : CPU raûnh roãi (idle)!1 tieán trình : khoâng caàn suy nghó nhieàu, ñuùng khoâng ?>1 : choïn ai baây giôø ? Döïa vaøo caùc thuaät toaùn ñieàu phoái
Ready List P1 P4 P5
10/20/2007 Trần Hạnh Nhi 25
Dispatcher - Nhieäm vuï
Nhieäm vuï cuûa Dispatcher: Chuyeån ñoåi ngöõ caûnhXeùt ví duï
Tieán trình A ñang duøng CPU 1 chuùt thì bò HÑH thu hoài CPUHÑH caáp CPU cho B duøng 1 chuùt, HÑH thu hoài laïi CPU.HÑH caáp CPU trôû laïi cho A.Giaù trò caùc thanh ghi giöõa nhöõng laàn chuyeån ñoåi CPU ?
Kòch baûn :Löu ngöõ caûnh tieán trình hieän haønhNaïp ngöõ caûnh tieán trình ñöôïc choïn keá tieáp
10/20/2007 Trần Hạnh Nhi 26
10/20/2007 Trần Hạnh Nhi 27
Dispatcher - Thaûo luaän
Baûn thaân HÑH cuõng laø 1 phaàn meàm, nghóa laø cuõng söû duïng CPU ñeåcoù theå chaïy ñöôïc.Caâu hoûi: Khi tieán trình A ñang chieám CPU, laøm theá naøo HÑH coùtheå thu hoài CPU laïi ñöôïc ? (vì luùc naøy HÑH khoâng giöõ CPU)
EÙp buoäc NSD thænh thoaûng traû CPU laïi cho HÑH ? Coù khaû thi ?Maùy tính phaûi coù 2 CPU, 1 daønh rieâng cho HÑH ?HÑH söû duïng ngaét ñoàng hoà (ngaét ñieàu phoái) ñeå kieåm soaùt heä thoáng
Moãi khi coù ngaét ñoàng hoà, HÑH kieåm tra xem coù caàn thu hoài CPU töø 1 tieán trình naøoñoù laïi hay khoâng ?HÑH chæ thu hoài CPU khi coù ngaét ñoàng hoà phaùt sinh.Khoaûng thôøi gian giöõa 2 laàn ngaét ñieàu phoái goïi laø chu kyø ñoàng hoà (toái thieåu laø 18.2 laàn / giaây)
10/20/2007 Trần Hạnh Nhi 28
Löïa choïn tieán trình ?
Taùc vuï cuûa SchedulerMuïc tieâu ?
Söû duïng CPU hieäu quaûÑaûm baûo taát caû caùc tieán trình ñeàu tieán trieån xöû lyù
Tieâu chuaån löïa choïn ?Taát caû caùc tieán trình ñeàu nhö nhau ?Ñeà xuaát moät ñoä öu tieân cho moãi tieán trình ?
Thôøi ñieåm löïa choïn ? (Thôøi ñieåm kích hoaït Scheduler())
10/20/2007 Trần Hạnh Nhi 29
Muïc tieâu ñieàu phoái
Hieäu quûa (Efficiency) Thôøi gian
Ñaùùp öùng (Response time) Hoaøn taát (Turnaround Time = Tquit -Tarrive):Chôø (Waiting Time = T in Ready ) :
Thoâng löôïng (Throughput = # jobs/s )Hieäu suaát Taøi nguyeânChi phí chuyeån ñoåi
Coâng baèng ( Fairness) : Taát caû caùc tieán trình ñeàu coù cô hoäi nhaän CPU
10/20/2007 Trần Hạnh Nhi 30
Thôøi ñieåm ra quyeát ñònh ñieàu phoái
Ñieàu phoái ñoäc quyeàn (non-preemptive scheduling):tieán trình ñöôïc choïn coù quyeàn ñoäc chieám CPU
Caùc thôøi ñieåm kích hoaït Scheduler P cur keát thuùcP cur : running ->blocked
Ñieàu phoái khoâng ñoäc quyeàn (preemptive scheduling): tieán trình ñöôïc choïn coù theå bò cöôùpCPU bôûi tieán trình coù ñoä öu tieân cao hôn
Caùc thôøi ñieåm kích hoaït Scheduler P cur keát thuùcP cur : Running -> BlockedQ : Blocked / New -> Ready
10/20/2007 Trần Hạnh Nhi 31
Hai nguyeân taéc ñieàu phoái CPU
Khoâng ñoäc quyeànwhile (true) {interrupt Pcursave state PcurScheduler.NextP() Pnextload state pnextresume Pnext
}
Ñoäc quyeàn
while (true) {save state PcurScheduler.NextP() Pnextload state pnextresume Pnextwait for Pnext
}
10/20/2007 Trần Hạnh Nhi 32
Ñaùnh giaù chieán löôïc ñieàu phoái
Söû duïng 2 ñaïi löôïng ño :Turn- around time = Tquit –Tarrive: töø luùc vaøo HT ñeán khi hoaøn taátWaiting time = T in Ready
Xeùt tröôøng hôïp trung bìnhN tieán trìnhAvg Turn- around time = (Σ Turn- around time Pi )/NAvg Waiting time = (Σ Waiting time Pi )/N
10/20/2007 Trần Hạnh Nhi 33
Caùc chieán löôïc ñieàu phoái
FIFO (FCFS)
Xoay vòng (Round Robin)
Theo độ ưu tiên
Công việc ngắn nhất (SJF)
Nhiều mức độ ưu tiên
10/20/2007 Trần Hạnh Nhi 34
FCFS (First comes first served)
Tieán trình vaøo RL laâu nhaát ñöôïc choïntröôùcTheo thứ tự vaøo RLĐộc quyềnABC CPU
Ready List
CPUBCReady List
CPUCReady List
10/20/2007 Trần Hạnh Nhi 35
Minh hoïa FCFS
32P3
31P2
240P1
CPU burstTarriveRLP
0:00 P1 vào RLP1 dùng CPU
0:01 P2 vào RL0:02 P3 vào RL
0:24 P1 kết thúcP2 dùng CPU
AvgWT = (23+25)/3 = 16
0:27 P2 kết thúcP3 dùng CPU
27-230-2P3
24-127-1P2
024P1
WTTTP
P1 P2 P30 24 27
10/20/2007 Trần Hạnh Nhi 36
Nhaän xeùt FCFS
Ñôn giaûnChòu ñöïng hieän töôïng tích luõy thôøi gian chôø
Tieán trình coù thôøi gian xöû lyù ngaén ñôïi tieán trình coù thôøi gian xöû lyùdaøiÖu tieân tieán trình cpu-bounded
Coù theå xaûy ra tình traïng ñoäc chieám CPU
10/20/2007 Trần Hạnh Nhi 37
Ñieàu phoái Round Robin (RR)
ABC CPUReady List
A chỉ chiếm CPU trong q ms
BCA CPUReady List
B được giao quyền sử dụng CPUtrong q ms kế tiếp
CAB CPUReady List
C được giao quyền sử dụng CPUtrong q ms kế tiếp
Ñieàu phoái theo nguyeân taéc FCFSMoãi tieán trình chæ söû duïng moät löôïng q cho moãi laàn söû duïng CPU
Quantum/Time slice
10/20/2007 Trần Hạnh Nhi 38
Minh hoïa RR, q=4
32P3
31P2
240P1
CPU burstTarriveRLP
AvgWT = (6+3+5)/3 = 4.66
7-210-2P3
4-17-1P2
0+(10-4)30P1
WTTTP
P1 P2 P3 P1 P1 P1 P1 P10 4 7 10 14 18 22 26 30
0:00 P1 vào, P1 dùng CPU
0:01 P2 vào (đợi)
0:02 P3 vào (đợi)
0:04 P1 hết lượt, P2 dùng CPU
0:07 P2 dừng, P3 dùng CPU0:10 P3 dừng, P1 dùng CPU
0:14 P1 vẫn chiếm CPU…
10/20/2007 Trần Hạnh Nhi 39
Minh hoïa RR, q=4
312P3
34P2
240P1
CPU burstTarriveRLP
P1 P1 P2 P1 P3 P1 P1 P10 4 8 11 15 18 22 26 30
RL0:00 P1
0:04
0:8 P2 P1
?
Tranh chaáp vò trí trong RL : “Chung thuûy”1. P : running -> ready2. P : blocked -> ready3. P: new ->ready
Khoâng phaûi luoân luoân coù thöù töï ñieàu phoái P1 P2 P3 P4P1 P2 P3 P4...
0:11 P10:15 P3 P10:18 P1
0:04 P1 P2
0:04 P2 P1
“Chung thuûy”
“Coù môùi nôùi cuõ”
10/20/2007 Trần Hạnh Nhi 40
RR : Khi naøo keát thuùc 1 löôït söû duïng CPU
Heát thôøi löôïng q ms (quantum) cho pheùpTieán trình keát thuùcTieán trình bò khoùa
ChờRsChờ biến cố
10/20/2007 Trần Hạnh Nhi 41
Nhaän xeùt RR
Söû duïng cô cheá khoâng ñoäc quyeànMoãi tieán trình khoâng phaûi ñôïi quaù laâuLoaïi boû hieän töôïng ñoäc chieám CPUHieäu quaû ?
Phuï thuoäc vaøo vieäc choïn löïa quantum qq quaùù lớn ???q quaù nhỏ ???
Tröôøng hôïp xaáu nhaát cuûa RR ?
Bao laâu ?
Giaûm tíùnh töôngtaùc
Taêng chi phí chuyeån ñoåingöõ caûnh
10/20/2007 Trần Hạnh Nhi 42
Ñieàu phoái vôùi ñoä öu tieân
Phân biệt tiến trình quan trọng >< tiến trình bình thường?
WinAmpđộ ưu tiên: cao (-3)
Outlookđộ ưu tiên: thấp (3)
WinWordđộ ưu tiên: trung bình (0)
Độưu
tiên
Tieán trình coù ñoä öu tieân cao nhaát ñöôïc choïn caáp CPU tröôùc
10/20/2007 Trần Hạnh Nhi 43
Ví duï: Ñoä öu tieân cuûa HÑH WinNT
WinNT gaùn cho moãi tieán trình ñoä öu tieân coù giaù trò giöõa 0 & 310 (ñoä öu tieân nhoû nhaát): daønh rieâng cho traïng thaùi system idle
Ñoä öu tieân ñöôïc phaân theo nhoùm:Realtime : (16 - 31)
Thích hôïp cho caùc tieán trình thôøi gian thöïcDaønh rieâng cho caùc tieán trình cuûa ngöôøi quaûn trò heä thoáng
Dynamic : (0 - 15)Thích hôïp cho caùc tieán trình cuûa ngöôøi duøng thöôøngChia thaønh 3 möùc :
high (11 - 15)normal (6 - 10) idle (2 - 6)
10/20/2007 Trần Hạnh Nhi 44
Bieåu ñoà phaân boá ñoä öu tieân cuûa WinNT
24
realtime
13
high
8
normal
system idledynamic idle
dynamic time-criticalrealtime idle
realtime time-critical
01
15
dynamiclevels 1-15
16
31
realtimelevels 16-31
lowest (-2)below normal (-1)
normal (0)above normal (+1)
highest (+2)
4
idle
10/20/2007 Trần Hạnh Nhi 45
Nguyeân taéc ñieàu phoái
Độc quyềnLượt sử dụng CPU kết thuùc khi:
tiến trình kết thuùc,tiến trình bị khoùa
Khoâng độc quyềnLượt sử dụng CPU kết thuùc khi:
tiến trình kết thuùc, tiến trình bị khoùa, coùtiến trình vôùi độ ưu tieân cao hơn vaøo RL
10/20/2007 Trần Hạnh Nhi 46
Minh hoïa ñoä öu tieân (khoângñoäc quyeàn)
1
0
2
Priority
32P3
31P2
240P1
CPU burstTRLP
AvgWT = (6+0+2)/3 = 2.66
4-27-2P3
04-1P2
0+(7-1)30P1
WTTTP
0:00 P1 vào, P1 dùng CPU
0:01 P2 vào (độ ưu tiên cao hơn P1)
P2 dành quyền dùng CPU
0:4 P2 kết thúc, P3 dùng CPU0:7 P3 dừng, P1 dùng CPU0:30 P1 dừng
P1 P3 P10 30
P241 7
P22
0:02 P3 vào (độ ưu tiên thấp hơn P2)
P3 không dành được quyền dùng CPU
10/20/2007 Trần Hạnh Nhi 47
Nhaän xeùt
Caùch tính ñoä öu tieân ?Heä thoáng gaùn : CPU times…Ngöôøi duøng gaùn töôøng minh
Tính chaát ñoä öu tieân :TónhÑoäng
Soá phaän tieán trình coù ñoä öu tieân thaáp ?Chôø laâu, laâu, laâu ...
starvation
Aging : taêng ñoä öu tieâncho nhöõng tieán trình chôø
laâu trong heä thoáng
10/20/2007 Trần Hạnh Nhi 48
Shortest Job First (SJF)
P3(cần 7 chu kỳ)
P1(cần 5 chu kỳ)
P2(cần 3 chu kỳ)
Ngắn nhất
Ready List
CPU
pi = thời_gian_còn_lại(Processi)
Là một dạng độ ưu tiên đặc biệt với độ ưu tiên
Có thể cài đặt độc quyền hoặc không độc quyền
10/20/2007 Trần Hạnh Nhi 49
Minh hoïa SJF (ñoäc quyeàn)(1)
32P3
31P2
240P1
CPU burstTarriveRLP
AvgWT = (23+25)/3 = 16
27-230P3
24-127P2
024P1
WTTTP
0:00 P1 vào, P1 dùng CPU
0:01 P2 vào RL
0:02 P3 vào RL
0:24 P1 kết thúc, P2 dùng CPU0:27 P2 dừng, P3 dùng CPU0:30 P3 dừng
P1 P2 P30 24 27 30
10/20/2007 Trần Hạnh Nhi 50
Minh hoïa SJF (ñoäc quyeàn)(2)
21P3
31P2
240P1
CPU burstTarriveRLP
AvgWT = (24+22)/3 = 15.33
24-226P3
26-129P2
024P1
WTTTP
0:00 P1 vào, P1 dùng CPU
0:01 P2 vào
0:01 P3 vào
0:24 P1 kết thúc, P3 dùng CPU0:26 P3 dừng, P2 dùng CPU0:29 P2 dừng
P1 P3 P20 24 26 29
10/20/2007 Trần Hạnh Nhi 51
Minh hoïa SJF (khoângñoäc quyeàn) (1)
32P3
31P2
240P1
CPU burstTarriveRLP
AvgWT = (6+0+2)/3 = 2.66
4-27-2P3
04-1P2
0+(7-1)30P1
WTTTP
0:00 P1 vào, P1 dùng CPU
0:01 P2 vào (độ ưu tiên cao hơn P1)
P2 dành quyền dùng CPU
0:4 P2 kết thúc, P3 dùng CPU0:7 P3 dừng, P1 dùng CPU0:30 P1 dừng
P1 P3 P10 30
P241 7
10/20/2007 Trần Hạnh Nhi 52
Minh hoïa SJF (khoângñoäc quyeàn) (2)
43P3
51P2
240P1
CPU burstTarriveRLP
AvgWT = (9+0+3)/3 = 4
6-310P3
06P2
0+(10-1)33P1
WTTTP
0:00 P1 vào, P1 dùng CPU
0:01 P2 vào (độ ưu tiên cao hơn P1)
P2 dành quyền dùng CPU
0:6 P2 kết thúc, P3 dùng CPU0:9 P3 dừng, P1 dùng CPU0:33 P1 dừng
P1 P3 P10 33
P261 10
P23
0:03 P3 vào (độ ưu tiên < P2)
P2 dành quyền dùng CPU
10/20/2007 Trần Hạnh Nhi 53
Minh hoïa SJF (nhieàu chu kyø CPU)
0
4
2
IO2T
1
10
2
IO1T
Null
R1
R2
IO2R
8
1
5
CPU1burst
R2
R1
R1
IO1R
010P3
12P2
20P1
CPU2 burst
TarriveRLP
P1 P30 21
P262 10
P13
CPU
P1 P2
13
1913 15
P23
R1
P1 P3221917 21
R2
P214
P315
P117
P3
10/20/2007 Trần Hạnh Nhi 54
Nhaän xeùt SJF
Toái öu thôøi gian chôøChöùng minh ?
Khoâng khaû thiLaøm sao bieát CPU burst ?
AvgWT = (3a+2b+c)Min AvgWT ?
a<b<c
P1a
P2b
P3c
past historyrelative weightmost recent information
( ) nnn t ταατ −+=+ 1 1
length of the nth CPU burst
predicted value for the nth CPU burst0<= α <=1
10/20/2007 Trần Hạnh Nhi 55
Ñieàu phoái vôùi nhieàu möùc öu tieân
Toå chöùc N RL öùng vôùinhieàu möùc öu tieânMoãi RLi aùp duïng moätchieán löôïc ñieàu phoáithích hôïpGiöõa caùc RL aùp duïngñieàu phoái theo ñoä öutieân :
RLi roãng môùi ñieàu phoáiRLi +1
Độ ưu tiên1
…2
n
CP
U
Kết hợpnhiều chiến lược
10/20/2007 Trần Hạnh Nhi 56
Ñieàu phoái vôùi nhieàu möùc öu tieân – Thöïc teá
Toå chöùc N RL öùng vôùinhieàu möùc öu tieânMoãi RLi aùp duïng RRGiöõa caùc RL aùp duïngñieàu phoái theo ñoä öutieân :
RLi roãng môùi ñieàu phoáiRLi +1
Độ ưu tiên1
…2
n
CP
U
Kết hợpnhiều chiến lược
10/20/2007 Trần Hạnh Nhi 57
Khuyeát ñieåm
Starvation !!!Giaûi phaùp Aging :
Chôø laâu quaù : chuyeån leân RL vôùi ñoä öu tieân cao hônChieám CPU laâu quaù : chuyeånxuoáng RL vôùi ñoä öu tieân thaáphôn
2
☺ ☺1 ☺ CPU
Chờ lâu quá
Khi naøo thöïc hieän aging ?Aging tieán trình naøo ?
10/20/2007 Trần Hạnh Nhi 58
Null00R220311P4
R232R15610P3
R152R2812P2
Null01R1580P1
Thieátbò
Thôøigian
Thieátbò
Thôøigian
IO laàn 2CPU2
IO laàn 1CPU1
Thôøi ñieåmvaøo Ready
list
Tieántrình
Bài tập: Hãy điều phốiCPU: SJF không độc quyền. R1,R2: FIFO
11/10/2007 Trần Hạnh Nhi 1
Chöông 5Ñoàng boä hoaù tieán trình
11/10/2007 Trần Hạnh Nhi 2
Noäi dung baøi giaûng
Xöû lyù ñoàng haønh vaø caùc vaán ñeà:Vaán ñeà tranh ñoaït ñieàu khieån (Race Condition)Vaán ñeà phoái hôïp xöû lyù
Baøi toaùn ñoàng boä hoùaYeâu caàu ñoäc quyeàn truy xuaát (Mutual Exclusion)Yeâu caàu phoái hôïp xöû lyù (Synchronization)
Caùc giaûi phaùp ñoàng boä hoaùBusy waitingSleep & Wakeup
Caùc baøi toaùn ñoàng boä hoaù kinh ñieånProducer – ConsumerReaders – WritersDinning Philosophers
11/10/2007 Trần Hạnh Nhi 3
Nhieàu tieán trình “chung soáng hoaø bình” trong heä thoáng ?
ÑÖØNG HY VOÏNGAn toaøn khi caùc tieán trình hoaøn toaøn ñoäc laäp
Laøm sao coù ñöôïc ??Thöïc teá
Caùc tieán trình chia seû taøi nguyeân chung ( file system, CPU...)Concurrent access => bugs.
Ví duï : Deâ con qua caàu
Xöû lyù ñoàng haønh = ...nhöùc ñaàu
11/10/2007 Trần Hạnh Nhi 4
Caùc vaán ñeà
Tranh chaápNhieàu tieán trình truy xuaát ñoàng thôøi moät taøi nguyeân mang baûn chaát khoâng chiaseû ñöôïc
Xaûy ra vaán ñeà tranh ñoaït ñieàu khieån (Race Condition)Keát quaû ?
Khoù bieát , thöôøng laø ...saiLuoân luoân nguy hieåm ?
...Khoâng, nhöng ñuû ñeå caân nhaéc kyõ caøng
Phoái hôïpCaùc tieán trình khoâng bieát töông quan xöû lyù cuûa nhau ñeå ñieàu chænh hoaït ñoängnhòp nhaøng
Caàn phoái hôïp xöû lyù (Rendez-vous)Keát quaû : khoù bieát, khoâng baûo ñaûm aên khôùp
11/10/2007 Trần Hạnh Nhi 5
Noäi dung baøi giaûng
Xöû lyù ñoàng haønh vaø caùc vaán ñeà:Vaán ñeà tranh ñoaït ñieàu khieån (Race Condition)Vaán ñeà phoái hôïp xöû lyù
Baøi toaùn ñoàng boä hoùaYeâu caàu ñoäc quyeàn truy xuaát (Mutual Exclusion)Yeâu caàu phoái hôïp xöû lyù (Synchronization)
Caùc giaûi phaùp ñoàng boä hoaùBusy waitingSleep & Wakeup
Caùc baøi toaùn ñoàng boä hoaù kinh ñieånProducer – ConsumerReaders – WritersDinning Philosophers
11/10/2007 Trần Hạnh Nhi 6
Tranh ñoaït ñieàu khieån (Race condition) - Ví duï
hits = hits +1; hits = hits + 1;
P1 P2
hits = 0
Keát quaû cuoái cuøng laø bao nhieâu ?
Ñeám soá ngöôøi vaøo Altavista : duøng 2 threads caäpnhaät bieán ñeám hits=> P1 vaø P2 chia seû bieán hits
11/10/2007 Trần Hạnh Nhi 7
Tranh ñoaït ñieàu khieån (Race condition) - Ví duï
(4)hits = 0 + 1
(1) read hits (0)
(3) hits = 0 + 1(2)read hits (0)
P1 P2
hits = 1
hits = 0time
11/10/2007 Trần Hạnh Nhi 8
Tranh ñoaït ñieàu khieån (Race condition) - Ví duï
(4) hits = 1 + 1
(1) read hits (0)
(2) hits = 0 + 1(3) read hits (1)
P1 P2
hits = 2
hits = 0time
11/10/2007 Trần Hạnh Nhi 9
Ai thaéng ?Coù baûo ñaûm raèng seõ coù ngöôøi thaéng ?Neáu moãi tieán trình xöû lyù treân 1 CPU thì sao ?
Tranh ñoaït ñieàu khieån (Race condition) - Ví duï (tt)
Thread b:while(i > -10)
i = i - 1;print “B won!”;
Thread a:while(i < 10)
i = i +1;print “A won!”;
i=0;
11/10/2007 Trần Hạnh Nhi 10
Tranh ñoaït ñieàu khieån (Race condition)-Nhaän xeùt
Keát quaû thöïc hieän tieán trình phuï thuoäc vaøo keát quaû ñieàu phoáiCuøng input, khoâng chaéc cuøng outputKhoù debug loãi sai trong xöû lyù ñoàng haønh
Xöû lyùLaøm lô
Deã , nhöng coù phaûi laø giaûi phaùpKhoâng chia seû taøi nguyeân chung : duøng 2 bieán hits1,hits2; xaâycaàu 2 lane...
Neân duøng khi coù theå, nhöng khoâng bao giôø coù theå ñaûm baûo ñuû taøinguyeân, vaø cuõng khoâng laø giaûi phaùp ñuùng cho moïi tröôøng hôïp
Giaûi phaùp toång quaùt : coù hay khoâng ?Lyù do xaûy ra Race condition ? Bad interleavings : moät tieán trình“xen vaøo” quaù trình truy xuaát taøi nguyeân cuûa moät tieán trình khaùcGiaûi phaùp : baûo ñaûm tính atomicity cho pheùp tieán trình hoaøn taát troïnveïn quaù trình truy xuaát taøi nguyeân chung tröôùc khi coù tieán trình khaùccan thieäp
11/10/2007 Trần Hạnh Nhi 11
Atomicity : loaïi boû Race Condition
read hits(1)hits = 1 + 1
P1 P2
hits = 2
hits = 0time
read hits (0)hits = 0 + 1
11/10/2007 Trần Hạnh Nhi 12
Mieàn gaêng (Critical Section) & Khaû naêng ñoäc quyeàn (Mutual Exclusion)
hits = hits + 1
printf(“Welcome”);
hits = hits + 1
printf(“Welcome”);
P1 P2
CSCS
Mieàn gaêng (CS) laø ñoaïn chöông trình coù khaû naêng gaây rahieän töôïng race condition
Hoã trôï Atomicity : Caàn baûo ñaûm tính “ñoäc quyeàn truyxuaát” (Mutual Exclusion) cho mieàn gaêng (CS)
printf(“Bye”); printf(“Bye”);
11/10/2007 Trần Hạnh Nhi 13
Noäi dung baøi giaûng
Xöû lyù ñoàng haønh vaø caùc vaán ñeà:Vaán ñeà tranh ñoaït ñieàu khieån (Race Condition)Vaán ñeà phoái hôïp xöû lyù
Baøi toaùn ñoàng boä hoùaYeâu caàu ñoäc quyeàn truy xuaát (Mutual Exclusion)Yeâu caàu phoái hôïp xöû lyù (Synchronization)
Caùc giaûi phaùp ñoàng boä hoaùBusy waitingSleep & Wakeup
Caùc baøi toaùn ñoàng boä hoaù kinh ñieånProducer – ConsumerReaders – WritersDinning Philosophers
11/10/2007 Trần Hạnh Nhi 14
Phoái hôïp hoaït ñoäng
(1) Send(“Anh”);
P1(2) Send(“yeâu”);
P2
(3) Send(“em”);
P3
(4) Send(“Khoâng”);
P4
Chuyeän gì ñaõ xaûy ra ?
(1) Send(“Anh”);
P1
(2) Send(“yeâu”);
P2
(3) printf(“em”);
P3
(4) Send(“Khoâng”);
P4
(1)Send(“Anh”);
P1
(2) Send(“yeâu”);
P2
(3) Send(“em”);
P3
(4) Send(“Khoâng”);
P4
11/10/2007 Trần Hạnh Nhi 16
Phoái hôïp xöû lyù
Laøm theá naøo baûo ñaûm trình töï thöïc hieän Job1 - Job2 ?P1 vaø P2 thöïc hieän “heïn hoø” (Rendez-vous) vôùi nhau
Hoã trôï Rendez-vous : Baûo ñaûm caùc tieán trình phoái hôïp vôùinhau theo 1 trình töï xöû lyù ñònh tröôùc.
P1 P2
Job1;Job2;
11/10/2007 Trần Hạnh Nhi 17
Noäi dung baøi giaûng
Xöû lyù ñoàng haønh vaø caùc vaán ñeà:Vaán ñeà tranh ñoaït ñieàu khieån (Race Condition)Vaán ñeà phoái hôïp xöû lyù
Baøi toaùn ñoàng boä hoùaYeâu caàu ñoäc quyeàn truy xuaát (Mutual Exclusion)Yeâu caàu phoái hôïp xöû lyù (Synchronization)
Caùc giaûi phaùp ñoàng boä hoaùBusy waitingSleep & Wakeup
Caùc baøi toaùn ñoàng boä hoaù kinh ñieånProducer – ConsumerReaders – WritersDinning Philosophers
11/10/2007 Trần Hạnh Nhi 18
Baøi toaùn ñoàng boä hoaù (Synchronization)
Nhieàu tieán trình chia seû taøi nguyeân chung ñoàng thôøi :Tranh chaáp Race ConditionNhu caàu “ñoäc quyeàn truy xuaát” (Mutual Exclusion)
Caùc tieán trình phoái hôïp hoaït ñoäng :Töông quan dieãn tieán xöû lyù ?Nhu caàu “hoø heïn” (Rendez-vous)
Thöïc hieän ñoàng boä hoaù :Laäp trình vieân ñeà xuaát chieán löôïc
Caùc tieán trình lieân quan trong baøi toaùn phaûi toân troïng caùc luaätñoàng boä
Giaûi phaùp söû duïng caùc cô cheá ñoàng boä :Do laäp trình vieân /phaàn cöùng / HÑH / NNLT cung caáp
11/10/2007 Trần Hạnh Nhi 19
Moâ hình ñaûm baûo Mutual Exclusion
Kieåm tra vaø daønh quyeàn vaøo CS
CS;
Töø boû quyeàn söû duïng CS
Nhieäm vuï cuûa laäp trình vieân:Theâm caùc ñoaïn code ñoàng boä hoùa vaøo chöông trình goácTheâm theá naøo : xem moâ hình sau ...
11/10/2007 Trần Hạnh Nhi 20
Moâ hình toå chöùc phoái hôïp giöõa hai tieán trình
P1 P2
Job1; Chôø ;Baùo hieäu ; Job2;
Nhieäm vuï cuûa laäp trình vieân:Theâm caùc ñoaïn code ñoàng boä hoùa vaøo 2 chöông trình goácTheâm theá naøo : xem moâ hình sau ...
Nhieàu tieán trình hôn thì sao ?Khoâng coù moâ hình toång quaùtTuøy thuoäc baïn muoán heïn hoø ra sao☺
11/10/2007 Trần Hạnh Nhi 21
Noäi dung baøi giaûng
Xöû lyù ñoàng haønh vaø caùc vaán ñeà:Vaán ñeà tranh ñoaït ñieàu khieån (Race Condition)Vaán ñeà phoái hôïp xöû lyù
Baøi toaùn ñoàng boä hoùaYeâu caàu ñoäc quyeàn truy xuaát (Mutual Exclusion)Yeâu caàu phoái hôïp xöû lyù (Synchronization)
Caùc giaûi phaùp ñoàng boä hoaùBusy watingSleep & Wakeup
Caùc baøi toaùn ñoàng boä hoaù kinh ñieånProducer – ConsumerReaders – WritersDinning Philosophers
11/10/2007 Trần Hạnh Nhi 22
Giaûi phaùp ñoàng boä hoaù
Moät phöông phaùp giaûi quyeát toát baøi toaùn ñoàng boä hoaù caànthoaû maûn 4 ñieàu kieän sau:Mutual Exclusion : Khoâng coù hai tieán trình cuøng ôû trongmieàn gaêng cuøng luùc.Progess : Moät tieán trình taïm döøng beân ngoaøi mieàn gaêngkhoâng ñöôïc ngaên caûn caùc tieán trình khaùc vaøo mieàn gaêngBounded Waiting : Khoâng coù tieán trình naøo phaûi chôø voâhaïn ñeå ñöôïc vaøo mieàn gaêng.Khoâng coù giaû thieát naøo ñaët ra cho söï lieân heä veà toác ñoäcuûa caùc tieán trình, cuõng nhö veà soá löôïng boä xöû lyù trongheä thoáng.
11/10/2007 Trần Hạnh Nhi 23
Caùc giaûi phaùp ñoàng boä hoaù
Nhoùm giaûi phaùp Busy WaitingPhaàn meàm
Söû duïng caùc bieán côø hieäuSöû duïng vieäc kieåm tra luaân phieânGiaûi phaùp cuûa Peterson
Phaàn cöùngCaám ngaétChæ thò TSL
Nhoùm giaûi phaùp Sleep & WakeupSemaphoreMonitorMessage
11/10/2007 Trần Hạnh Nhi 24
Caùc giaûi phaùp “Busy waiting”
While (chöa coù quyeàn) donothing() ;
CS;
Töø boû quyeàn söû duïng CS
Tieáp tuïc tieâu thuï CPU trong khi chôø ñôïi vaøo mieàn gaêngKhoâng ñoøi hoûi söï trôï giuùp cuûa Heä ñieàu haønh
11/10/2007 Trần Hạnh Nhi 25
Nhoùm giaûi phaùp Busy-Waiting
Caùc giaûi phaùp Busy WaitingCaùc giaûi phaùp phaàn meàm
Giaûi phaùp bieán côø hieäuGiaûi phaùp kieåm tra luaân phieânGiaûi phaùp Peterson
Phaàn cöùngCaám ngaétChæ thò TSL
11/10/2007 Trần Hạnh Nhi 26
while (lock == 1); // waitlock = 1;
CS;
lock = 0;
int lock = 0
NonCS;
NonCS;
P0
while (lock == 1); // waitlock = 1;
CS;
lock = 0;
NonCS;
NonCS;
P1
Giaûi phaùp phaàn meàm 1: Söû duïng bieán côø hieäu
11/10/2007 Trần Hạnh Nhi 27
while (lock == 1); // waitlock = 1;
CS;
lock = 0;
int lock = 0
NonCS;
NonCS;
P0
while (lock == 1); // waitlock = 1;
CS;
lock = 0;
NonCS;
NonCS;
P1
Giaûi phaùp phaàn meàm 1: Tình huoáng
11/10/2007 Trần Hạnh Nhi 28
Nhaän xeùt Giaûi phaùp phaàn meàm 1: Bieán côø hieäu
Coù theå môû roäng cho N tieán trìnhKhoâng baûo ñaûm Mutual Exclusion
Nguyeân nhaân ?
Baûn thaân ñoaïn code kieåm tra vaø daønh quyeàn cuõng laø CS !
while ( lock == 1); // waitlock = 1;Bò ngaét xöû lyù
Taøi nguyeân duøng chung
CS !
11/10/2007 Trần Hạnh Nhi 29
Giaûi phaùp phaàn meàm 2 : Kieåm tra luaân phieân
while (turn !=0); // wait
CS;
turn = 1;
int turn = 1
NonCS;
NonCS;
P0
while (turn != 1); // wait
CS;
turn = 0;
NonCS;
NonCS;
P1
11/10/2007 Trần Hạnh Nhi 30
Giaûi phaùp phaàn meàm 2 : Tình huoáng
int turn = 1
turn ==1Wait...CS;turn = 1NonCS;CS ? (turn ==1)
P0
CS;turn = 0;NonCS...
P1
P0 khoâng vaøo ñöôïc CS laàn 2 khi P1 döøng trong NonCS !
11/10/2007 Trần Hạnh Nhi 31
Nhaän xeùt Giaûi phaùp 2: Kieåm tra luaân phieân
Chæ daønh cho 2 tieán trìnhBaûo ñaûm Mutual Exclusion
Chæ coù 1 bieán turn, taïi 1 thôøi ñieåm chæ cho 1 tieán trình turn vaøo CSKhoâng baûo ñaûm Progress
Nguyeân nhaân ?“Môø cuûa” cho ngöôøi = “Ñoùng cöûa” chính mình !
11/10/2007 Trần Hạnh Nhi 32
Keát hôïp yù töôûng cuûa 1 & 2, caùc tieán trình chia seû:int turn; //ñeán phieân aiint interest[2] = FALSE; //interest[i] = T : Pi muoán vaøo CS
Giaûi phaùp phaàn meàm 3 : Peterson’s Solution
j = 1 – i;interest[i] = TRUE;turn = j;while (turn==j && interest[j]==TRUE);
CS;
interest[i] = FALSE;
NonCS;
NonCS;
Pi
11/10/2007 Trần Hạnh Nhi 33
Giaûi phaùp phaàn meàm 3 : Peterson
i = 1 – j;interest[j] = TRUE;turn = i;while (turn==i && interest[i]==TRUE);
CS;interest[j] = FALSE;
NonCS;
NonCS;
Pj
11/10/2007 Trần Hạnh Nhi 34
Laø giaûi phaùp phaàn meàm ñaùp öùng ñöôïc caû 3 ñieàu kieänMutual Exclusion :
Pi chæ coù theå vaøo CS khi: interest[j] == F hay turn == iNeáu caû 2 muoán veà thì do turn chæ coù theå nhaän giaù trò 0 hay 1 neân chæ coù 1 tieán trình vaøo CS
ProgressSöû duïng 2 bieán interest[i] rieâng bieät => traïng thaùi ñoái phöông khoângkhoaù mình ñöôïc
Bounded Wait : interest[i] vaø turn ñeàu coù thay ñoåi giaù tròKhoâng theå môû roäng cho N tieán trình
Nhaän xeùt giaûi phaùp phaàn meàm 3: Peterson
11/10/2007 Trần Hạnh Nhi 35
Nhaän xeùt chung veà caùc giaûi phaùp phaàn meàm trong nhoùmBusy-Waiting
Khoâng caàn söï hoã trôï cuûa heä thoángDeã...sai, Khoù môû roängGiaûi phaùp 1 neáu coù theå ñöôïc hoã trôï atomicity thì seõ toát...
Nhôø ñeán phaàn cöùng ?
11/10/2007 Trần Hạnh Nhi 36
Nhoùm Busy-Waiting - Caùc giaûi phaùp phaàn cöùng
Caùc giaûi phaùp Busy WaitingCaùc giaûi phaùp phaàn meàm
Giaûi phaùp bieán côø hieäuGiaûi phaùp kieåm tra luaân phieânGiaûi phaùp Peterson
Caùc giaûi phaùp phaàn cöùngCaám ngaétTest&Set lock Instruction
11/10/2007 Trần Hạnh Nhi 37
Nhoùm Busy-Waiting - Giaûi phaùp phaàn cöùng 1: Caám ngaét
Disable Interrupt;
CS;
Enable Interrupt;
NonCS;
NonCS;
Disable Interrupt : Caám moïi ngaét, keå caû ngaét ñoàng hoàEnable Interrupt : Cho pheùp ngaét
11/10/2007 Trần Hạnh Nhi 38
Thieáu thaän troïngNeáu tieán trình bò khoaù trong CS ?
System HaltCho pheùp tieán trình söû duïng moät leänh ñaëc quyeàn
Quaù ...lieàu !
Maùy coù N CPUs ?Khoâng baûo ñaûm ñöôïc Mutual Exclusion
Giaûi phaùp phaàn cöùng 1: Caám ngaét
11/10/2007 Trần Hạnh Nhi 39
CPU hoã trôï primitive Test and Set LockTraû veà giaù trò hieän haønh cuûa 1 bieán, vaø ñaët laïi giaù trò True cho bieánThöïc hieän moät caùch khoâng theå phaân chia
Nhoùm Busy-Waiting - Giaûi phaùp phaàn cöùng 2: chæ thò TSL()
TSL (boolean &target){
TSL = target;target = TRUE;
}
11/10/2007 Trần Hạnh Nhi 40
Aùp duïng TSL
while (TSL(lock)); // wait
CS;
lock = 0;
NonCS;
NonCS;
Pi
int lock = 0
11/10/2007 Trần Hạnh Nhi 41
Caàn ñöôïc söï hoã trôï cuûa cô cheá phaàn cöùngKhoâng deã, nhaát laø treân caùc maùy coù nhieàu boä xöû lyù
Deã môû roäng cho N tieán trình
Nhaän xeùt chung caùc giaûi phaùp phaàn cöùng trong nhoùm Busy-Waiting
11/10/2007 Trần Hạnh Nhi 42
Söû duïng CPU khoâng hieäu quaûLieân tuïc kieåm tra ñieàu kieän khi chôø vaøo CS
Khaéc phuïcKhoaù caùc tieán trình chöa ñuû ñieàu kieän vaøo CS, nhöôøng CPU chotieán trình khaùc
Phaûi nhôø ñeán SchedulerWait and See...
Nhaän xeùt chung cho caùc giaûi phaùp trong nhoùm Busy Waiting
11/10/2007 Trần Hạnh Nhi 43
Caùc giaûi phaùp ñoàng boä hoaù
Nhoùm giaûi phaùp Busy WaitingPhaàn meàm
Söû duïng caùc bieán côø hieäuSöû duïng vieäc kieåm tra luaân phieân Giaûi phaùp cuûa Peterson
Phaàn cöùngCaám ngaétChæ thò TSL
Nhoùm giaûi phaùp Sleep & WakeupSemaphoreMonitorMessage
11/10/2007 Trần Hạnh Nhi 44
Caùc giaûi phaùp “Sleep & Wake up”
if (chöa coù quyeàn) Sleep() ;
CS;
Wakeup( somebody);
Töø boû CPU khi chöa ñöôïc vaøo CSKhi CS troáng, seõ ñöôïc ñaùnh thöùc ñeå vaøo CSCaàn ñöôïc Heä ñieàu haønh hoã trôï
Vì phaûi thay ñoåi traïng thaùi tieán trình
11/10/2007 Trần Hạnh Nhi 45
YÙ töôûng
Heä Ñieàu haønh hoã trôï 2 primitive :Sleep() : Tieán trình goïi seõ nhaän traïng thaùi BlockedWakeUp(P): Tieán trình P nhaän traïng thaùi Ready
AÙp duïngSau khi kieåm tra ñieàu kieän seõ vaøo CS hay goïi Sleep() tuøy vaøo keátquaû kieåm traTieán trình vöøa söû duïng xong CS seõ ñaùnh thöùc caùc tieán trình bòBlocked tröôùc ñoù
11/10/2007 Trần Hạnh Nhi 46
AÙp duïng Sleep() and Wakeup()
int busy; // busy ==0 : CS troángint blocked; // ñeám soá tieán trình bò Blocked chôø vaøo CS
if (busy) {blocked = blocked + 1; Sleep();
}else busy = 1;
busy = 0;if(blocked) { WakeUp(P);
blocked = blocked - 1;}
CS;
11/10/2007 Trần Hạnh Nhi 47
Vaán ñeà vôùi Sleep & WakeUp
if (busy) {blocked = blocked + 1; Sleep();
}else busy = 1;
busy = 0;if(blocked) {
WakeUp(P);blocked = blocked - 1;
}
CS;
if (busy) {blocked = blocked + 1; Sleep();
}else busy = 1;
busy = 0;if(blocked) {
WakeUp(P);blocked = blocked - 1;
}
CS;
Nguyeân nhaân : Vieäc kieåm tra ñieàu kieän vaø ñoäng taùc töø boû CPU coù theå bò ngaét quaõngBaûn thaân caùc bieán côø hieäu khoâng ñöôïc baûo veä
P1 P2P1 blocked
vónh vieãn
WakeUpbò “laïc”
11/10/2007 Trần Hạnh Nhi 48
Caøi ñaët caùc giaûi phaùp Sleep & WakeUp ?
Heä ñieàu haønh caàn hoã trôï caùc cô cheá cao hônDöïa treân Sleep&WakeUpKeát hôïp caùc yeáu toá kieåm traThi haønh khoâng theå phaân chia
Nhoùm giaûi phaùp Sleep & WakeupSemaphoreMonitorMessage
11/10/2007 Trần Hạnh Nhi 49
Giaûi phaùp Sleep & Wakeup 1: Semaphore
Semaphore s; // s >=0
Ñöôïc ñeà nghò bôûi Dijkstra naêm 1965Caùc ñaëc tính : Semaphore s;
Coù 1 giaù tròChæ ñöôïc thao taùc bôûi 2 primitives :
Down(s)Up(s)
Caùc primitive Down vaø Up ñöôïc thöïc hieän khoâng theå phaân chia
11/10/2007 Trần Hạnh Nhi 50
Caøi ñaët Semaphore (Sleep & Wakeup)
Semaphore ñöôïc xem nhö laø moät resourceCaùc tieán trình “yeâu caàu” semaphore : goïi Down(s)
Neáu khoâng hoaøn taát ñöôïc Down(s) : chöa ñöôïc caáp resourceBlocked, ñöôïc ñöa vaøo s.L
Caàn coù söï hoã trôï cuûa HÑHSleep() & Wakeup()
typedef struct{
int value;struct process* L;
} Semaphore ;
Giaù trò beân trong cuûa semaphore
Danh saùch caùc tieán trình ñangbò block ñôïi semaphore nhaän
giaù trò döông
11/10/2007 Trần Hạnh Nhi 51
Caøi ñaët Semaphore (Sleep & Wakeup)
Down (S){
S.value --;if S.value < 0 {Add(P,S.L);Sleep();
}}
Up(S){S.value ++;if S.value ≤ 0 {Remove(P,S.L);Wakeup(P);
}}
11/10/2007 Trần Hạnh Nhi 52
Söû duïng Semaphore
Toå chöùc “ñoäc quyeàn truy xuaát” PiDown (s)
CS;Up(s)
Toå chöùc “hoø heïn”
P1 :Job1;Up(s)
P2:Down (s);Job2;
Semaphore s = ?1
Semaphore s = ?0
11/10/2007 Trần Hạnh Nhi 53
Nhaän xeùt Semaphores
Laø moät cô cheá toát ñeå thöïc hieän ñoàng boäDeã duøng cho N tieán trình
Nhöng yù nghóa söû duïng khoâng roõ raøngMutualExclusion : Down & UpRendez-vous : Down & UpChæ phaân bieät qua moâ hình
Khoù söû duïng ñuùngNhaàm laãn
11/10/2007 Trần Hạnh Nhi 54
Giaûi phaùp Sleep & Wakeup 2: Monitor
Ñeà xuaát bôûi Hoare(1974) & Brinch (1975)Laø cô cheá ñoàng boä hoaù do NNLT cung caáp
Hoã trôï cuøng caùc chöùc naêng nhö SemaphoreDeã söû duïng vaø kieåm soaùt hôn Semaphore
Baûo ñaûm Mutual Exclusion moät caùch töï ñoängSöû duïng bieán ñieàu kieän ñeå thöïc hieän Synchronization
11/10/2007 Trần Hạnh Nhi 55
Monitor : Ngöõ nghóa vaø tính chaát(1)
Laø moät module chöông trình ñònh nghóaCaùc CTDL, ñoái töôïng duøng chungCaùc phöông thöùc xöû lyù caùc ñoái töôïng naøyBaûo ñaûm tính encapsulation
Caùc tieán trình muoán truy xuaát döõ lieäubeân trong monitor phaûi duøng caùc phöôngthöùc cuûa monitor :
P1 : M.C() // i=5P2: M.B() // printf(j)
MethodA
i=0
MethodB
prinf(j)
MethodC
i=5
Share variable: i,j;
Monitor M
11/10/2007 Trần Hạnh Nhi 56
Monitor : Ngöõ nghóa vaø tính chaát(2)
Töï ñoäng baûo ñaûm Mutual ExclusionTaïi 1 thôøi ñieåm chæ coù 1 tieán trình ñöôïc thöïchieän caùc phöông thöùc cuûa MonitorCaùc tieán trình khoâng theå vaøo Monitor seõñöôïc ñöa vaøo Entry queue cuûa Monitor
Ví duïP1 : M.A();P6 : M.B();P7 : M.A();P8 : M.C();
MethodA
i = 0MethodB
printf(i)MethodC
i=5
P1
P8P7P6Entryqueue
Share variable: i,j;
11/10/2007 Trần Hạnh Nhi 57
Monitor : Ngöõ nghóa vaø tính chaát(3)
Hoã trôï Synchronization vôùi caùc condition variables
Wait(c) : Tieán trình goïi haøm seõ bò blockedSignal(c): Giaûi phoùng 1 tieán trình ñang bòblocked treân bieán ñieàu kieän cC.queue : danh saùch caùc tieán trình blocked treân c
Traïng thaùi tieán trình sau khi goïi Signal?Blocked. Nhöôøng quyeàn vaøo monitor cho tieántrình ñöôïc ñaùnh thöùcTieáp tuïc xöû lyù heát chu kyø, roài blocked
MethodA
i=0;signal(c1)
MethodB
MethodC
wait(C1);i=5
signal(C2 );
C1:
C2: P5
P4
P1
P3
P2
P8P7P6Entryqueue
Share variable: i,j;
Condition variable:
P1
11/10/2007 Trần Hạnh Nhi 58
Söû duïng Monitor
Toå chöùc “ñoäc quyeàn truy xuaát”
PiM.AccessMutual(); //CS
Toå chöùc “hoø heïn”
P1 : M.F1();
P2:M.F2();
Monitor M<resource type> RC;Function AccessMutual
CS; // access RC
Monitor MCondition c;Function F1
Job1;Signal(c);
Function F2Wait(c);Job2;
11/10/2007 Trần Hạnh Nhi 59
Ñöôïc hoã trôï bôûi HÑHÑoàng boä hoùa treân moâi tröôøng phaân taùn2 primitive Send & Receive
Caøi ñaët theo mode blocking
Server P
1. Send Request
2. Receive Accept
3. Send Finish
Giaûi phaùp Sleep & Wakeup 3: Message
11/10/2007 Trần Hạnh Nhi 60
Noäi dung baøi giaûng
Xöû lyù ñoàng haønh vaø caùc vaán ñeà:Vaán ñeà tranh ñoaït ñieàu khieån (Race Condition)Vaán ñeà phoái hôïp xöû lyù
Baøi toaùn ñoàng boä hoùaYeâu caàu ñoäc quyeàn truy xuaát (Mutual Exclusion)Yeâu caàu phoái hôïp xöû lyù (Synchronization)
Caùc giaûi phaùp ñoàng boä hoaùBusy waitingSleep & Wakeup
Caùc baøi toaùn ñoàng boä hoaù kinh ñieånProducer – ConsumerReaders – WritersDinning Philosophers
11/10/2007 Trần Hạnh Nhi 61
Baøi toaùn ñoàng boä kinh ñieån 1: Producer - Consumer (Bounded-Buffer Problem)
P
CBuffer (N)Buffer (N)
Moâ taû : 2 tieán trình P vaø C hoaït ñoäng ñoàng haønhP saûn xuaát haøng vaø ñaët vaøo BufferC laáy haøng töø Buffer ñi tieâu thuïBuffer coù kích thöôùc giôùi haïn
Tình huoángP vaø C ñoàng thôøi truy caäp Buffer ?P theâm haøng vaøo Buffer ñaày ?C laáy haøng töø Buffer troáng ?
P khoâng ñöôïc ghi döõ lieäu vaøo buffer ñaõ ñaày (Rendez-vous)C khoâng ñöôïc ñoïc döõ lieäu töø buffer ñang troáng (Rendez-vous)P vaø C khoâng ñöôïc thao taùc treân buffer cuøng luùc (Mutual Exclusion)
11/10/2007 Trần Hạnh Nhi 62
Producer – Consummer : Giaûi phaùp Semaphore
Caùc bieán duøng chung giöõa P vaø CBufferSize = N; // soá choã trong boä ñeämsemaphore mutex = 1 ; // kieåm soaùt truy xuaát ñoäc quyeànsemaphore empty = BufferSize; // soá choã troáng semaphore full = 0; // soá choã ñaàyint Buffer[BufferSize]; // boä ñeäm duøng chung
11/10/2007 Trần Hạnh Nhi 63
Producer – Consummer : Giaûi phaùp Semaphore
Producer(){int item;while (TRUE) {
produce_item(&item);down(&empty);down(&mutex)enter_item(item,Buffer);up(&mutex);up(&full);
}}
Consumer(){int item;while (TRUE) { down(&full); down(&mutex);remove_item(&item,Buffer); up(&mutex); up(&empty);consume_item(item); }
}
11/10/2007 Trần Hạnh Nhi 64
P&C - Giaûi phaùp Semaphore: Thinking...
Producer(){int item;while (TRUE) {
produce_item(&item);down(&mutex)down(&empty);enter_item(item,Buffer);up(&mutex);up(&full);
}}
Consumer(){int item;while (TRUE) { down(&mutex);down(&full); remove_item(&item,Buffer); up(&mutex); up(&empty);consume_item(item); }
}
11/10/2007 Trần Hạnh Nhi 65
Producer – Consummer : Giaûi phaùp Monitor
monitor ProducerConsumer
condition full, empty;
int Buffer[N], count;
procedure enter();
{
if (count == N)
wait(full);
enter_item(item,Buffer);
count ++;
if (count == 1)
signal(empty);
}
procedure remove();
{
if (count == 0)
wait(empty)
remove_item(&item,Buffer);
count --;
if (count == N-1)
signal(full);
}
count = 0;
end monitor;
11/10/2007 Trần Hạnh Nhi 66
Producer – Consummer : Giaûi phaùp Monitor
Producer()
{
int item;
while (TRUE)
{
produce_item(&item);
ProducerConsumer.enter;
}
}
Consumer();
{
int item;
while (TRUE)
{
ProducerConsumer.remove;
consume_item(item);
}
}
11/10/2007 Trần Hạnh Nhi 67
Producer – Consummer : Giaûi phaùp Message
Producer(){int item;message m;
while (TRUE) {produce_item(&item);receive(consumer, Request);create_message(&m, item);send(consumer,&m);
}}
Consumer();{int item;message m;for(0 to N)
send(producer, Request); while (TRUE){receive(producer, &m);remove_item(&m,&item); send(producer, Request);consumer_item(item);
}}
Coi chöøngDeadlock
11/10/2007 Trần Hạnh Nhi 68
Baøi toaùn ñoàng boä hoaù kinh ñieån 2:Readers & Writers
Moâ taû : N tieán trình Ws vaø Rs hoaït ñoäng ñoàng haønhRs vaø Ws chia seû CSDLW caäp nhaät noäi dung CSDLRs truy caäp noäi dung CSDL
Tình huoángCaùc Rs cuøng truy caäp CSDL ?W ñang caäp nhaät CSDL thì caùc Rs truy caäp CSDL ?Caùc Rs ñang truy caäp CSDL thì W muoán caäp nhaät CSDL ?
W khoâng ñöôïc caäp nhaät döõ lieäu khi coù ít nhaát moät R ñang truy xuaát CSDL (ME)Rs khoâng ñöôïc truy caäp CSDL khi moät W ñang caäp nhaät noäi dung CSDL (ME)
Taïi moät thôøi ñieåm , chæ cho pheùp moät W ñöôïc söûa ñoåi noäi dung CSDL (ME)
Database
R1
R2 R3
W1 W2
11/10/2007 Trần Hạnh Nhi 69
Readers-Writers vôùi “active readers”
11/10/2007 Trần Hạnh Nhi 70
Readers-writers vôùi moät “active writer”
11/10/2007 Trần Hạnh Nhi 71
Öu tieân ai hôn ñaây ?
11/10/2007 Trần Hạnh Nhi 72
Readers & Writers
W ñoäc quyeàn truy xuaát CSDLW hieän taïi keát thuùc caäp nhaät CSDL : ai vaøo ?
Cho W khaùc vaøo, caùc Rs phaûi ñôïiÖu tieân Writer, Reader coù theå starvation
Cho caùc Rs vaøo, Ws khaùc phaûi ñôïiÖu tieân Reader, Writer coù theå starvation
11/10/2007 Trần Hạnh Nhi 73
Readers & Writers : Giaûi phaùp Semaphore
Caùc bieán duøng chung giöõa Rs vaø Wssemaphore db = 1; // Kieåm tra truy xuaát CSDL
11/10/2007 Trần Hạnh Nhi 74
R&W : Giaûi phaùp Semaphore (1)
Reader(){
down(&db); read-db(Database); up(&db);
}
Writer(){
down(&db); write-db(Database); up(&db);
}
Chuyeän gì xaûy ra ?Chæ coù 1 Reader ñöôïc ñoïc CSDL taïi 1 thôøi ñieåm !
11/10/2007 Trần Hạnh Nhi 75
R&W : Giaûi phaùp Semaphore (2)
Reader(){
rc = rc +1;if (rc ==1)
down(&db); read-db(Database); rc = rc – 1;if (rc == 0)
up(&db);}
Writer(){
down(&db); write-db(Database); up(&db);
}
Ñuùng chöa ?rc laø bieán duøng chung giöõa caùcReader...
CS ñoù
11/10/2007 Trần Hạnh Nhi 76
Readers & Writers : Giaûi phaùp Semaphore
Caùc bieán duøng chung giöõa Rs vaø Wssemaphore db = 1; // Kieåm tra truy xuaát CSDL
Caùc bieán duøng chung giöõa Rs int rc; // Soá löôïng tieán trình Readersemaphore mutex = 1; // Kieåm tra truy xuaát rc
11/10/2007 Trần Hạnh Nhi 77
R&W : Giaûi phaùp Semaphore (3)
Reader(){
down(&mutex);rc = rc +1;if (rc ==1)
down(&db);up(mutex); read-db(Database); down(mutex);rc = rc – 1;if (rc == 0)
up(&db);up(mutex);
}
Writer(){
down(&db); write-db(Database); up(&db);
}
Ai ñöôïc öu tieân ?
11/10/2007 Trần Hạnh Nhi 78
R&W : Giaûi phaùp Semaphore (Thinking...)
Reader(){
down(&mutex);rc = rc +1;up(mutex); if (rc ==1)
down(&db);read-db(Database); down(mutex);rc = rc – 1;up(mutex);if (rc == 0)
up(&db);}
Writer(){
down(&db); write-db(Database); up(&db);
}
??? heâ, heâ, heâ ☺
11/10/2007 Trần Hạnh Nhi 79
R&W: Giaûi phaùp Monitor
monitor ReaderWriter
? Database;
procedure R1();
{
}
procedure R...();
{
}
procedure W1();
{
}
procedure W...();
{
}
monitor ReaderWriter
condition OKWrite, OKRead; int rc = 0;Boolean busy = false;
procedure BeginRead(){if (busy)
wait(OKRead);rc++; signal(OKRead);
}procedure FinishRead(){
rc--;if (rc == 0)
signal(OKWrite);}
procedure BeginWrite(){
if (busy || rc != 0) wait(OKWrite);
busy = true;}
procedure FinishWrite() {busy = false;if (OKRead.Queue)signal(OKRead);
elsesignal(OKWrite);
}
end monitor;
11/10/2007 Trần Hạnh Nhi 81
Reader&Writer : Giaûi phaùp Monitor
Reader()
{
RW.BeginRead();
Read-db(Database);
RW.FinishRead();
}
Writer();
{
RW.BeginWrite();
Write-db(Database);
RW.FinishWrite();
}
11/10/2007 Trần Hạnh Nhi 82
Baøi toaùn ñoàng boä hoaù kinh ñieån 3:Böûa aên cuûa caùc Trieát gia (Dining Philosophers)
Naêm trieát gia ngoài chung quanh baønaên moùn spaghetti (yum..yum)
Treân baøn coù 5 caùi nóa ñöôïc ñaët giöõa 5 caùiñóa (xem hình) Ñeå aên moùn spaghetti moãi ngöôøi caàn coù 2 caùi nóa
Trieát gia thöù i:Thinking...Eating...
Chuyeän gì coù theå xaûy ra ?
11/10/2007 Trần Hạnh Nhi 83
Dining Philosophers : Tình huoáng nguy hieåm
2 trieát gia “giaønh giaät” cuøng 1 caùinóa
Tranh chaápCaàn ñoàng boä hoaù hoaït ñoängcuûa caùc trieát gia
11/10/2007 Trần Hạnh Nhi 84
Dining Philosophers : Giaûi phaùp ñoàng boä
semaphore fork[5] = 1;
Philosopher (i){
while(true){
down(fork[i]);down(fork[i+1 mod 5])eat;up(fork[i]);up(fork[i+1 mod 5]);think;
}Deadlock
11/10/2007 Trần Hạnh Nhi 85
Dining Philosophers : Thaùch thöùc
Caàn ñoàng boä sao cho:Khoâng coù deadlockKhoâng coù starvation
4/6/2008 Trần Hạnh Nhi 1
Baøi giaûng 6 : Quaûn lyù boä nhôù
Toång quanNhu caàu boä nhôù cuûa tieán trìnhCaùc vaán ñeà veà boä nhôù
Chuyeån ñoåi ñòa chæCaùc coâng ñoaïnCaùc moâ hình chuyeån ñoåi ñòa chæ
Vai troø Quaûn lyù boä nhôù cuûa HÑHCaùc yeâu caàu
Caùc moâ hình toå chöùc boä nhôùMoâ hình Lieân tuïcMoâ hình Khoâng lieân tuïc
4/6/2008 Trần Hạnh Nhi 2
Chöông trình caàn ñöôïc naïp vaøo Boä nhôù chính ñeå thi haønhCPU chæ coù theå truy xuaát tröïc tieáp Main Memory Chöông trình khi ñöôïc naïp vaoø BNC seõ ñöôïc toå chöùc theo caáu truùc cuûatieán trình töông öùngAi caáp phaùt BNC cho tieán trình ?
Chöông trình nguoàn söû duïng ñòa chæ symbolicTieán trình thöïc thi truy caäp ñiaï chæ thöïc trong BNCAi chuyeån ñoåi ñòa chæ ?
Toång quan : Nhu caàu veà boä nhôù cuûa tieán trình
HÑHBoä phaän Quaûn lyù Boä nhôù
Moâ hình toå chöùc ? Cô cheá hoã trôï Chieán löôïc thöïc hieän
4/6/2008 Trần Hạnh Nhi 3
Toång quan : Caùc vaán ñeà veà Boä nhôù
Caáp phaùt Boä nhôù :Uniprogramming : Khoâng khoùMultiprogramming :
BNC giôùi haïn, N tieán trình ?Baûo veä ? Chia seû ?
Tieán trình thay ñoåi kích thöôùc ?Tieán trình lôùn hôn BNC ?
Chuyeån ñoåi ñòa chæ tieán trìnhThôøi ñieåm chuyeån ñoåi ñòa chæ ?Coâng thöùc chuyeån ñoåi ?
Phuï thuoäc vaøo Moâ hình toå chöùc BNC ?Caàn söï hoã trôï cuûa phaàn cöùng ?
Tieán trình thay ñoåi vò trí trong BNC ?
4/6/2008 Trần Hạnh Nhi 4
Ví duï
Neáu nachos caàn theâm khoâng gian ? Neáu nachos coù loãi vaø thöïc hieän thao taùc ghi vaøo ñòa chæ 0x7100? Khi naøo gcc bieát raèng noù thöôøng truù taïi 0x4000?Neáu emacs caàn nhieàu boä nhôù hôn dung löôïng vaät lyù hieän coù?
OS
nachos
gcc
emacs 0x0000
0x40000x3000
0x70000x9000
Moâi tröôøng ña nhieäm
4/6/2008 Trần Hạnh Nhi 5
C program: test.c
Executable: test.exe
Compiler
Linker
Loader
Memory
Object:test.o
lib.o
Caùc böôùc chuyeån ñoåi chöông trình
Caùc böôùc chuyeån ñoåisource program -> .exe
int x;int y;x = 12;y = 5;F();
A.CF(){ printf(“Hi”);}
B.C
0 // x2 // y4 // [0] = 12;5 // [2] = 5;6 // jmp F
//external// object
A.O B.O0 -2 // F() …
0 // F()3 // x5 // y7 // [3] = 12;8 // [5] = 5;9 // jmp 0
? // F()? // x? // y? // [?] = 12;? // [?] = 5;? // jmp ?
OS
Test.exe
4/6/2008 Trần Hạnh Nhi 8
Thuaät ngöõ
Ñòa chæ logic – coøn goïi laø ñòa chæ aûo , laø taát caû caùc ñòa chæ do boä xöû lyù taïo raÑòa chæ physic - laø ñòa chæ thöïc teá maø trình quaûn lyù boä nhôùnhìn thaáy vaø thao taùcKhoâng gian ñòa chæ – laø taäp hôïp taát caû caùc ñòa chæ aûo phaùt sinh bôûi moät chöông trìnhKhoâng gian vaät lyù – laø taäp hôïp taát caû caùc ñòa chæ vaät lyù töông öùng vôùi caùc ñòa chæ aûo
4/6/2008 Trần Hạnh Nhi 9
Nhu caàu boä nhôù cuûa tieán trình
Tiến trình gồm có:code segment
read from program file by execusually read-onlycan be shared
data segmentinitialized global variables (0 / NULL)uninitialized global variablesheap
dynamic memorye.g., allocated using mallocgrows against higher addresses
stack segmentvariables in a functionstored register states (e.g. calling function EIP)grows against lower addresses
system data segment (PCB)segment pointerspidprogram and stack pointers…
Stack cho các thread
process A
low address
high address
……...
…
8048314 <add>:
8048314: push %ebp
8048315: mov %esp,%ebp
8048317: mov 0xc(%ebp),%eax
804831a: add 0x8(%ebp),%eax
804831d: pop %ebp
804831e: ret
804831f <main>:
804831f: push %ebp
8048320: mov %esp,%ebp
8048322: sub $0x18,%esp
8048325: and $0xfffffff0,%esp
8048328: mov $0x0,%eax
804832d: sub %eax,%esp
804832f: movl $0x0,0xfffffffc(%ebp)
8048336: movl $0x2,0x4(%esp,1)
804833e: movl $0x4,(%esp,1)
8048345: call 8048314 <add>
804834a: mov %eax,0xfffffffc(%ebp)
804834d: leave
804834e: ret
804834f: nop
code segment
system data segment (PCB)
data segment
initialized variables
uninitialized variables
data
seg
men
t
heap
stack
“unuse
d”mem
ory
possible stacksfor more threads
4/6/2008 Trần Hạnh Nhi 10
Logical and Physical Address Spaces
4/6/2008 Trần Hạnh Nhi 11
Truy xuaát boä nhôù
Ñòa chæ cuûa Instruction vaø data trong program source code laøsymbolic:
goto errjmp;X = A + B;
Nhöõng ñòa chæ symbolic naøy caàn ñöôïc lieân keát (bound) vôùi caùc ñòa chæthöïc trong boä nhôù vaät lyù tröôùc khi thi haønh codeAddress binding: aùnh xaï ñòa chæ töø khoâng gian ñòa chæ (KGÑC) naøyvaøo KGÑC khaùcThôøi ñieåm thöïc hieän address binding ?
compile timeload timeexecution time.
4/6/2008 Trần Hạnh Nhi 12
Coù theå thöïc hieän vieäc keát buoäc ñòa chæ taïi 1 trong 3 thôøiñieåm :
Compile-time: Phaùt sinh ñòa chæ tuyeät ñoáiPhaûi bieát tröôùc vò trí naïp chöông trìnhPhaûi bieân dòch laïi chöông trình khi vò trí naïp thay ñoåi
Load-time: Khi bieân dòch chæ phaùt sinh ñòa chæ töông ñoáiKhi naïp, bieát vò trí baét ñaàu seõ tính laïi ñòa chæ tuyeät ñoáiPhaûi taùi naïp khi vò trí baét ñaàu thay ñoåi
Execution-time:Khi bieân dòch,naïp chæ phaùt sinh ñòa chæ tuong ñoáiTrì hoaõn thôøi ñieåm keât buoäc ñòa chæ tuyeät ñoái ñeán khi thi haønhKhi ñoù ai tính toaùn ñòa chæ tuyeät ñoái ?
Phaàn cöùng : MMU
Thôøi ñieåm keát buoäc ñòa chæ ?
4/6/2008 Trần Hạnh Nhi 13
Chuyeån ñoåi ñòa chæ
gcc
virtual address
Load Store
errordata
Translation box
CPU
legal addr?Illegal?
Physicalmemory
Physicaladdress
MMU
4/6/2008 Trần Hạnh Nhi 14
CPU, MMU and Memory
4/6/2008 Trần Hạnh Nhi 15
Yeâu caàu quaûn lyù boä nhôù
Taêng hieäu suaát söû duïng CPUCaàn hoã trôï Multiprogramming
Löu tröõ cuøng luùc nhieàu tieán trình trong BNC ?
Caùc yeâu caàu khi toå chöùc löu tröõ tieán trình:1. Relocation2. Protection3. Sharing4. Logical Organization5. Physical Organization
4/6/2008 Trần Hạnh Nhi 16
Khoâng bieát tröôùc chöông trình seõ ñöôïc naïp vaøo BN ôû vò trínaøo ñeå xöû lyù.Moät tieán trình coù theå ñöôïc di dôøi trong boä nhôù sau khi ñaõnaïp C
Tieán trình taêng tröôûng ?HÑH saép xeáp laïi caùc tieán trình ñeå coù theå söû duïng BNC hieäu quûahôn.
Taùi ñònh vò (Relocation)
4/6/2008 Trần Hạnh Nhi 17
Khoâng cho pheùp tieán trình truy caäp ñeán caùc vò trí nhôù ñaõcaáp cho tieán trình khaùc (khi chöa coù pheùp).Khoâng theå thöïc hieän vieäc kieåm tra hôïp leä taïi thôøi ñieåmbieân dòch hay naïp, vì chöông trình coù theå ñöôïc taùi ñònh vò.Thöïc hieän kieåm tra taïi thôøi ñieåm thi haønh
Caàn söï hoã trôï cuûa phaàn cöùng.
Baûo veä (Protection)
4/6/2008 Trần Hạnh Nhi 18
Caàn cho pheùp nhieàu tieán trình tham chieáu ñeán cuøng moätvuøng nhôù maø khoâng toån haïi ñeán tính an toaøn heä thoáng :
Tieát kieäm choå löu tröõ cho caùc module duøng chung.Cho pheùp caùc tieán trình coäng taùc coù khaû naêng chia seû döõ lieäu.
Chia seû (Sharing)
4/6/2008 Trần Hạnh Nhi 19
Ngöôøi duøng vieát chöông trình goàm nhieàu module, vôùi caùcyeâu caàu baûo veä cho töøng module coù theå khaùc nhau:
instruction modules : execute-only.data modules : read-only hay read/write.moät soá module laø private, soá khaùc coù theå laø public.
OS caàn hoã trôï caùc cô cheá coù theå phaûn aùnh moâ hình logic cuûa chuông trình
Toå chöùc logic (Logical Organization)
4/6/2008 Trần Hạnh Nhi 20
Toå chöùc vaät lyù (Physical Organization)
Caáp phaùt vuøng nhôù vaät lyù sao cho hieäu quaûVaø deã daøng chuyeån ñoåi chöông trình qua laïi giöõa BNC vaøBNP
4/6/2008 Trần Hạnh Nhi 21
Caùc moâ hình toå chöùc boä nhôù
Caáp phaùt Lieân tuïc (Contigous Allocation)Linker – LoaderBase & Bound
Caáp phaùt Khoâng lieân tuïc (Non Contigous Allocation)SegmentationPaging
4/6/2008 Trần Hạnh Nhi 22
Caáp phaùt Lieân tuïc (Contigous Allocation)
Nguyeân taéc : Chöông trình ñöôïc naïp toaøn theå vaøo BNC ñeå thi haønhCaàn moät vuøng nhôù lieân tuïc, ñuû lôùn ñeå chöùa Chöông trình
Khoâng gian ñòa chæ : lieân tuïcKhoâng gian vaät lyù : coù theå toå chöùc
Fixed partitionVariable partition
2 moâ hình ñôn giaûnLinker – LoaderBase & Bound
4/6/2008 Trần Hạnh Nhi 23
Fixed Partitioning
Phaân chia KGVL thaønh caùcpartitions
Coù 2 caùch phaân chia partitions :kích thöôùc baèng nhaukích thöôùc khaùc nhau
Moãi tieán trình seõ ñöôïc naïp vaøomoät partition ñeå thi haønh
Chieán löôïc caáp phaùt partition ?
4/6/2008 Trần Hạnh Nhi 24
Chieán löôïc caáp phaùt partitions cho tieán trình
Kích thöôùc partition baèng nhaukhoâng coù gì phaûi suy nghó !
Kích thöôùc partition khoâng baèngnhau :
Söû duïng nhieàu haøng ñôïiCaáp cho tieán trình partition vôùikích thöôùc beù nhaát (ñuû lôùn ñeåchöùa tieân trình)Khuyeát ñieåm : phaân boá caùc tieántrình vaøo caùc partition khoângñeàu, moät soá tieán trình phaûi ñôïitrong khi coù partition khaùctroáng
4/6/2008 Trần Hạnh Nhi 25
Chieán löôïc caáp phaùt partitions cho tieán trình
Kích thöôùc partition khoâng baèngnhau :
Söû duïng 1 haøng ñôïiCaáp cho tieán trình partition töïdo vôùi kích thöôùc beù nhaát (ñuûlôùn ñeå chöùa tieân trình)Caàn duøng moät CTDL ñeå theodoõi caùc partition töï do
4/6/2008 Trần Hạnh Nhi 26
Nhaän xeùt Fixed Partitioning
Söû duïng BN khoâng hieäu quaûinternal fragmentation : kích thöôùc chöông trình khoâng ñuùng baèng kích thöôùcpartition
Möùc ñoä ña chöông cuûa heä thoáng (Soá tieán trình ñöôïc naïp) bò giôùi haïnbôûi soá partitions
3M
8M
P1 (2M)
P2 (4M)
internal frag
internal frag
4/6/2008 Trần Hạnh Nhi 27
Dynamic Partitioning
BNC khoâng ñöôïc phaân chiatröôùc
Caùc partition coù kích thöôùc tuøy yù, seõ hình thaønh trong quaù trình naïpcaùc tieán trình vaøo heä thoáng
Moãi tieán trình seõ ñöôïc caáp phaùtñuùng theo kích thöôùc yeâu caàu
khoâng coøn internal fragmentation
P1 (2M)P2 (4M)
Dynamic Partitioning: tình huoáng
Choïn löïa partition ñeå caáp phaùt cho tieán trình ?Ñoàng thôøi coù nhieàu partition töï do ñuû lôùn ñeå chöùa tieán trìnhDynamic Allocation problem
Tieán trình vaøo sau khoâng laáp ñaày choã troáng tieán trình tröôùc ñeå laïiexternal fragmentation
P1 (2M)P2 (4M)
P3 (8M)
2M
P4 (1.5M)
external fragmentation
4/6/2008 Trần Hạnh Nhi 29
Ví duï Dynamic Partitioning
4/6/2008 Trần Hạnh Nhi 30
Ví duï Dynamic Partitioning
4/6/2008 Trần Hạnh Nhi 31
Giaûi quyeát vaán ñeà Dynamic Allocation
Caùc chieán löôïc thoâng duïng ñeå choïn partition:First-fit: choïn partition töï do ñaàu tieânBest-fit: choïn partition töï do nhoû nhaát ñuû chöùa tieán trìnhWorst-fit: choïn partition töï do lôùn nhaát ñuû chöùa tieán trình
2MP1
8M
P3 (1M)
P21.5M
Worst Fit
First Fit
Best Fit
4/6/2008 Trần Hạnh Nhi 32
Memory Compaction (Garbage Collection)
Giaûi quyeát vaán ñeà External Fragmentation :Doàn caùc vuøng bò phaân maûnh laïi vôùi nhau ñeå taïo thaønh partition lieân tuïc ñuû lôùnñeå söû duïngChi phí thöïc hieän cao
2M
P1
1M
External fragmentations
P21.5M
4/6/2008 Trần Hạnh Nhi 33
Caùc moâ hình chuyeån ñoåi ñòa chæ
Fixed/Dynamic partition laø moâ hình toå chöùc naïp tieán trìnhvaøo KGVLCaàn coù moâ hình ñeå chuyeån ñoåi ñòa chæ töø KGÑC vaøo KGVL
Linker LoaderBase & Bound
4/6/2008 Trần Hạnh Nhi 34
Moâ hình Linker-Loader
Taïi thôøi ñieåm Link, giöõ laïi caùc ñòa chæ logicVò trí base cuûa tieán trình trong boä nhôù xaùc ñònh ñöôïc vaøo thôøiñieåm naïp :
ñòa chæ physic = ñòa chæ logic + base
0x0000
test.exe0x4000
0x3000
test.exe
jump 0x2000 jump 0x5000
0x7000
OS
(base)
4/6/2008 Trần Hạnh Nhi 35
Nhaän xeùt moâ hình Linker-Loader
Khoâng caàn söï hoã trôï phaàn cöùng ñeå chuyeån ñoåi ñòa chæLoader thöïc hieän
Baûo veä ?Khoâng hoã trôï
Dôøi chuyeån sau khi naïp ?Khoâng hoã trôï taùi ñònh vòPhaûi naïp laïi !
4/6/2008 Trần Hạnh Nhi 36
Moâ hình Base & Bound
0x0000
Test.exe0x4000
Base0x3000
OS
Test.exe
jump 0x2000 jump 0x2000
Bound0x7000
Taïi thôøi ñieåm Link, giöõ laïi caùc ñòa chæ logicVò trí base , bound ñöôïc ghi nhaän vaøo 2 thanh ghi:Keát buoäc ñòa chæ vaøo thôøi ñieåm thi haønh => taùi ñònh vò ñöôïc :
ñòa chæ physic = ñòa chæ logic + base registerBaûo veä : ñòa chæ hôïp leä ⊆ [base, bound]
4/6/2008 Trần Hạnh Nhi 37
Nhaän xeùt moâ hình Base & Bound
Hoã trôïBaûo veäTaùi ñònh vò
MMU+ base reg
logical addrsmemory
physical addrs
CPU
Keát buoäc ñòa chæ taïi thôøi ñieåm thi haønh => caàn hoã trôï cuûa phaàn cöùng
4/6/2008 Trần Hạnh Nhi 38
Khuyeát ñieåm cuûa caáp phaùt lieân tuïc
Khoâng coù vuøng nhôù lieân tuïc ñuû lôùn ñeå naïp tieán trình ?Boù tay ...Söû duïng BNC khoâng hieäu qua”!
1MP1
8M
P3 (9M)
P21M
4/6/2008 Trần Hạnh Nhi 39
Caùc moâ hình toå chöùc boä nhôù
Caáp phaùt Lieân tuïc (Contigous Allocation)Linker – LoaderBase & Bound
Caáp phaùt Khoâng lieân tuïc (Non Contigous Allocation)SegmentationPaging
4/6/2008 Trần Hạnh Nhi 40
Caùc moâ hình caáp phaùt khoâng lieân tuïc
Cho pheùp naïp tieán trình vaøo BNC ôû nhieàu vuøng nhôù khoânglieân tuïcKhoâng gian ñòa chæ : phaân chia thaønh nhieàu partition
Segmentation Paging
Khoâng gian vaät lyù : coù theå toå chöùcFixed partition : PagingVariable partition : Segmentation
4/6/2008 Trần Hạnh Nhi 41
Segmentation
Laäp trình vieân : chöông trình laø moät taäp caùc segmentsMoät segment laø moät ñôn vò chöông trình goàm caùc ñoái töôïng coù cuøng nhoùm ngöõnghóaVí duï : main program, procedure, function, local variables, global variables,common block,stack, symbol table, arrays...Caùc segment coù theå coù kích thöôùc khaùc nhau
Moâ hình Segmentation :KGÑC : phaân chia thaønh caùc segmentKGVL : toå chöùc thaønh dynamic partitionsNaïp tieán trình :
Moãi segment caàn ñöôïc naïp vaøo moät partition lieân tuïc, töï do, ñuû lôùn chosegment
partition naøo ? ...Dynamic Allocation !Caùc segment cuûa cuøng 1 chöông trình coù theå ñöôïc naïp vaøo nhöõng partition khoâng lieân tuïc
4/6/2008 Trần Hạnh Nhi 42
Moâ hình Segmentation
KGVL
int m;
main ()
{
F1(m);
}
F1(int x)
{ x = 9;
}code
(main,F1)
data(m)
stack
heap
KGDCQuaûn lyù ñòa chæ ?
4/6/2008 Trần Hạnh Nhi 43
Toå chöùc Segmentation
Ñiaï chæ logic : <segment-number, offset>Ñòa chæ physic : <real address>Chuyeån ñoåi ñòa chæ : <s,d> <r>Chuyeån ñoåi ñòa chæ vaøo thôøi ñieåm thi haønh
MMU thi haønhSöû duïng Segment Table (baûng phaân ñoaïn) ñeå löu thoâng tin caáp phaùt BNC, laøm côsôû thöïc hieän aùnh xaï ñòa chæMoãi tieán trình coù moät Segment Table
Sâegment Table:Soá phaàn töû cuûa Segment Table = Soá Segment cuûa chöông trìnhMoãi phaàn töû cuûa Segment Table moâ taû cho 1 segment, vaø coù caáu truùc :
base: ñòa chæ vaät lyù trong BNC cuûa partition chöùa segmentlimit : kích thöôùc segment
Löu tröõ Segment Table ?Cache : neáu ñuû nhoûBNC : Segment-table base register (STBR), Segment-table length register (STLR)
4/6/2008 Trần Hạnh Nhi 44
Chuyeån ñoåi ñòa chæ trong moâ hình Segmentation
Logical Addr
Seg# offset
3 128
Seg tablebase limit
3 0x1000 512
mem
seg128
+ 0x1000? yesno
fault
012
4/6/2008 Trần Hạnh Nhi 45
Logical-to-Physical Address Translation in segmentation
4/6/2008 Trần Hạnh Nhi 46
Nhaän xeùt Moâ hình Segmentation
Caáp phaùt khoâng lieân tuïc => taän duïng boä nhôù hieäu quaûHoã trôï taùi ñònh vò
Töøng SegmentHoã trôï Baûo veä vaø Chia seû ñöôïc ôû möùc module
YÙ nghóa cuûa “möùc module” ?Chuyeån ñoåi ñòa chæ phöùc taïp☺ Ñaõ coù MMU...
Söû duïng dynamic partition : chòu ñöïngDynamic Allocation : choïn vuøng nhôù ñeå caáp cho moät segment☺ First fit, Best fit, Worst fit
External Fragmentation :Memory Compaction : chi phí cao
4/6/2008 Trần Hạnh Nhi 47
Sharing ofSegments:
Text Editor
4/6/2008 Trần Hạnh Nhi 48
Paging
Hoã trôï HÑH khaéc phuïc baøi toaùn caáp phaùt boä nhôù ñoäng, vaø loaïi boûexternal fragmentationMoâ hình Paging :
KGÑC : phaân chia chöông trình thaønh caùc page coù kích thöôùc baèng nhauKhoâng quan taâm ñeán ngöõ nghóa cuûa caùc ñoái töôïng naèm trong page
KGVL : toå chöùc thaønh caùc fixed partitions coù kích thöôùc baèng nhau goïi laø framepage size = frame sizeNaïp tieán trình :
Moãi page caàn ñöôïc naïp vaøo moät frame töï doCaùc pages cuûa cuøng 1 chöông trình coù theå ñöôïc naïp vaøo nhöõng frames khoâng keá caän nhau.Tieán trình kích thöôùc N pages -> caàn N frame töï do ñeå naïp
4/6/2008 Trần Hạnh Nhi 49
Moâ hình Paging
KGVL
int m;
main ()
{
F1(m);
}
F1(int x)
{ x = 9;
}
KGDC
Quaûn lyù ñòa chæ ?
int m;
main ()
F1(int x)
stack
heap
4/6/2008 Trần Hạnh Nhi 50
Toå chöùc Paging
Ñiaï chæ logic : <page-number, offset>Ñòa chæ physic : <frame-number, offset>Chuyeån ñoåi ñòa chæ : <p,d> <f,d>Chuyeån ñoåi ñòa chæ vaøo thôøi ñieåm thi haønh
MMU thi haønhSöû duïng Page Table ñeå löu thoâng tin caáp phaùt BNC, laøm cô sôû thöïc hieän aùnh xaï ñòachæMoãi tieán trình coù moät Page Table
Page Table Soá phaàn töû cuûa Page Table = Soá Page trong KGÑC cuûa chöông trìnhMoãi phaàn töû cuûa baûng Page Table moâ taû cho 1 page, vaø coù caáu truùc :
frame: soá hieäu frame trong BNC chöùa pageLöu tröõ Page Table ?
Cache : khoâng ñuûBNC : Page-table base register (PTBR), Page-table length register (PTLR)
4/6/2008 Trần Hạnh Nhi 51
Chuyeån ñoåi ñòa chæ trong moâ hình Paging
CPU
KGVL
Physical addr
Logical addr
p d f d
f
Page table
4/6/2008 Trần Hạnh Nhi 52
Logical-to-Physical Address Translation in Paging
4/6/2008 Trần Hạnh Nhi 53
Nhaän xeùt Moâ hình Paging
Loaïi boûDynamic AllocationExternal Fragmentation
“Trong suoát” vôùi LTVHoã trôï Baûo veä vaø Chia seû ôû möùc pageInternal Fragmentation
Löu tröõ Page Table trong boä nhôùToán choãTaêng thôøi gian chuyeån ñoåi ñòa chæ
4/6/2008 Trần Hạnh Nhi 54
Löu tröõ Page Table
Giaû söû heä thoáng söû duïng m bit ñòa chæSize of KGÑC = 2m
Kích thöôùc pageTreân nguyeân taéc tuøy yù, thöïc teá choïn pagesize = 2n
Taïi sao ?
Soá trang trong KGÑC: #pages = 2m / 2n = 2m-n
Ví duï : 32-bits ñòa chæ, pagesize = 4KKGÑC = 232 -> #pages= 232-212 = 220 = 1.000.000 pages !#pages = #entry trong PT
Ñiaï chæ logic : Page Table
Moãi tieán trình löu 1 Page Table Soá löôïng phaàn töû quaù lôùn -> Löu BNCMoãi truy xuaát ñòa chæ seõ toán 2 laàn truy xuaát BNC
p d(m-n) n
4/6/2008 Trần Hạnh Nhi 55
Löu tröõ Page Table : Tieát kieäm khoâng gian
Söû duïng baûng trang ña caápChia baûng trang thaønh caùc phaàn nhoû, baûn thaân baûng trang cuõng seõ ñöôïc phaân trangChæ löu thöôøng tröïc baûng trang caáp 1, sau ñoù khi caàn seõ naïp baûng trang caáp nhoû hôn thích hôïp...Coù theå loaïi boû nhöõng baûng trang chöùa thoâng tin veà mieàn ñòa chæ khoâng söû duïng
Söû duïng Baûng trang nghòch ñaûoMoâ taû KGVL thay vì moâ taû KGÑC -> 1 IPT cho toaøn boä heä thoáng
4/6/2008 Trần Hạnh Nhi 56
Baûng trang ña caáp
Baûng trang tuyeán tínhSöû duïng page-number laøm chæmuïc ñeán Page TablePhaûi löu taát caû caùc phaàn töûmoâ taû taát caû caùc trang trong KGÑC
Nhöõng page khoâng söû duïng : laõng phíNaïp toaøn boä PT vaøo BNC : toán choã
p d 0123...p...789101112131415
f
516
2
9
Baûng trang ña caáp0123456789101112131415
0123
4567
891011
12131415
0123
13
0123456789101112
12131415
Page Table caáp 1
Page Table caáp 2
Page Table caáp 2
Page Table caáp 2
Page Table caáp 2
4/6/2008 Trần Hạnh Nhi 58
Moâ hình baûng trang 2 caáp
4/6/2008 Trần Hạnh Nhi 59
Ví duï moâ hình baûng trang 2 caáp
Moät maùy tính söû duïng ñòa chæ 32bít vôùi kích thöôùc trang 4Kb.Ñòa chæ logic ñöôïc chia thaønh 2 phaàn:
Soá hieäu trang : 20 bits.Offset tính töø ñaàu moãi trang :12 bits.
Vì baûng trang laïi ñöôïc phaân trang neân soá hieäu trang laïi ñöôïcchia laøm 2 phaàn:
Soá hieäu trang caáp 1. Soá hieäu trang caáp 2.
4/6/2008 Trần Hạnh Nhi 60
Ví duï moâ hình baûng trang 2 caáp
Vì theá, ñòa chæ logic seõ coù daïng nhö sau:page number page offset
pi p2 d10 10 12
Baûng trang ña caáp 0123
0123
0123
0123
0123
13
0123456789101112
14151617
Page Table caáp 1
Page Table caáp 2
Page Table caáp 2
Page Table caáp 2
Page Table caáp 2
1 2 100
4/6/2008 Trần Hạnh Nhi 62
Baûng trang nghòch ñaûo (Inverted Page Table)
Söû duïng duy nhaát moät baûng trang nghòch ñaûo cho taát caû caùc tieán trình Moãi phaàn töû trong baûng trang nghòch ñaûo moâ taû moät frame, coù caáu truùc
<page> : soá hieäu page maø frame ñang chöùa ñöïng<idp> : id cuûa tieán trình ñang ñöôïc sôõ höõu trang
Moãi ñòa chæ aûo khi ñoù laø moät boä ba <idp, p, d >Khi moät tham khaûo ñeán boä nhôù ñöôïc phaùt sinh, moät phaàn ñòa chæ aûo laø <idp, p > ñöôïc ñöa ñeán cho trình quaûn lyù boä nhôù ñeå tìm phaàn töûtöông öùng trong baûng trang nghòch ñaûo, neáu tìm thaáy, ñòa chæ vaät lyù<i,d> seõ ñöôïc phaùt sinh
4/6/2008 Trần Hạnh Nhi 63
Kieán truùc baûng trang nghòch ñaûo
4/6/2008 Trần Hạnh Nhi 64
Löu tröõ Page table : Tieát kieäm thôøi gian
Moãi truy caäp BNC caàn truy xuaát BNC 2 laàn :Tra cöùu Page Table ñeå chuyeån ñoåi ñòa chæTra cöu baûn thaân data
Laøm gì ñeå caûi thieän :Tìm caùch löu PT trong cache
Cho pheùp tìm kieám nhanhPT lôùn, cache nhoû : laøm sao löu ñuû ?
Löu 1 phaàn PT...Phaàn naøo ?
Caùc soá hieäu trang môùi truy caäp gaàn ñaây nhaát...
4/6/2008 Trần Hạnh Nhi 65
Translation Lookaside Buffer (TLB)
Vuøng nhôù Cache trong CPU ñöôïc söû duïng ñeå löu taïm thôøimoät phaàn cuûa PT ñöôïc goïi laø Translation Lookaside Buffer (TLB)
Cho pheùp tìm kieám toác ñoä caoKích thöôùc giôùi haïn (thöôøng khoâng quaù 64 phaàn töû)
Moãi entry trong TLB chöùa moät soá hieäu page vaø frame töôngöùng ñang chöùa pageKhi chuyeån ñoåi ñòa chæ, truy xuaát TLB tröôùc, neáu khoâng tìmthaáy soá hieäu page caàn thieát, môùi truy xuaát vaøo PT ñeå laáythoâng tin frame.
4/6/2008 Trần Hạnh Nhi 66
Translation Lookaside Buffer
4/6/2008 Trần Hạnh Nhi 67
Chuyeån ñoåi ñòa chæ vôùi Paging
CPU p d
f d
f
d
TLB
Memory
virtual address
physical address
p f
f
PTf
4/6/2008 Trần Hạnh Nhi 68
Söû duïng TBL
4/6/2008 Trần Hạnh Nhi 69
Baûo veä vaø chia seû trong Segmentation vaø Paging
Baûo veäSegmentation : moãi phaàn töû trong ST ñöôïc gaén theâm caùc bit baûoveä
Moãi segment coù theå ñöôïc baûo veä tuøy theo ngöõ nghóa cuûa caùc ñoái töôïngbeân trong segment
Paging : moãi phaàn töû trong PT ñöôïc gaén theâm caùc bit baûo veäMoãi page khoâng nhaän thöùc ñöôïc ngöõ nghóa cuûa caùc ñoái töôïng beân trongpage, neân baûo veä chæ aùp duïng cho toaøn boä trang, khoâng phaân bieät.
Chia seû: Cho nhieàu phaàn töï trong KGÑC cuøng troû ñeán 1 vòtrí trong KGVL
Segmentation : chia seû möùc module chöông trìnhPaging : chia seû caùc trang
Sharing Pages: A Text Editor
Sharing Pages: A Text Editor
ed 3 + data 1
ed 3 + data 3
ed 3 + data 2
Chia seû Page 2 = Chia seû caû code vaø data !
4/6/2008 Trần Hạnh Nhi 72
Ñaùnh giaù caùc moâ hình chuyeån ñoåi ñòa chæ
Giaû söû coù: tm : thôøi gian truy xuaát BNC
tc : thôøi gian truy xuaát cachehit-ration : tæ leä tìm thaáy moät soá hieäu trang p trong TLB
Coâng thöùc tính thôøi gian truy caäp thöïc teá (Time Effective Acess) ñeán moät ñoái töôïng trong BNC
bao goàm thôøi gian chuyeån ñoåi ñòa chæ vaø thôøi gian truy xuaát döõ lieäuTEA = (time biding add + time acces memory)
Linker-LoaderTEA = tm
(data)
Base + BoundTEA = (tc + tc) + tm
(Base & Bound) (data)
SegmentationTEA = tc + tm
(ST trong cache) (data)
PagingKhoâng söû duïng TLB :
TEA = tm + tm(PT trong mem) (data)
Coù söû duïng TLB : TEA = hit-ratio ( tc + tm ) + (1- hit-ratio)( tc + tm + tm )
(TLB) (data) (TLB) (PT) (data)
12/16/2007 Trần Hạnh Nhi 1
Baøi giaûng 7 : Boä nhôù AÛo
VaÁn ñeà vôùi Real MemoryYÙ töôûng Virtual MemoryThöïc hieän Virtual MemoryCaùc chieán löôïc cuûa Virtual Memory
Chieán löôïc naïpChieán löôïc thay theá trangChieán löôïc caáp phaùt khung trang
Hieän töôïng thrashing Nguyeân nhaânGiaûi phaùp
12/16/2007 Trần Hạnh Nhi 2
Caùc caáp boä nhôù
RegistersCache
Memory
Cho ñeán nay : Naïp toaøn boä tieán trình vaøo boä nhôù roài thöïchieän noù...
Neáu kích thöôùc tieán trình lôùn hôn dung löông boä nhôù chính ?
12/16/2007 Trần Hạnh Nhi 3
Giaûi phaùp
Taïi moät thôøi ñieåm chæ coù 1 chæ thò ñöôïc thi haønhTaïi sao phaûi naïp taát caû tieán trình vaøo BNC cuøng 1 luùc ?
YÙ töôûngCho pheùp naïp vaø thi haønh töøng phaàn tieán trình
Ai ñieàu khieån vieäc thay ñoåi caùc phaàn ñöôïc naïp vaø thi haønh ?Taïi moät thôøi ñieåm chæ giöõ trong BNC caùc chæ thò vaø döõ lieäu caàn thieáttaïi thôøi ñieåm ñoù
Caùc phaàn khaùc cuûa tieán trình naèm ôû ñaâu ?
Giaûi phaùp Boä nhôù aûo (virtual memory)
12/16/2007 Trần Hạnh Nhi 4
RegistersCache
MemoryVirtual Memory
Virtual Memory
Neáu coù moät Virtual Memory vôùi dung löôïng raát raát lôùn cho LTV laøm vieäc...Hoan hoâ !
12/16/2007 Trần Hạnh Nhi 5
YÙ töôûngTaùch bieät KGÑC vaø KGVL
LTV : moãi tieán trình laøm vieäc vôùi KGÑC 2m cuûa mình (ñòa chæ töø 0 – (2m -1))HÑH : chòu traùch nhieäm naïp caùc KGÑC vaøo moät KGVL chung
Giaûi phaùp cuûa HÑH : Naïp töøng phaàn tieán trìnhPhaân chia KGÑC thaønh caùc phaàn ?
Paging/SegmentationMôû roäng BNC ñeå löu tröõ caùc phaàn cuûa tieán trình chöa ñöôïc naïp
Duøng BNP(disk) ñeå môû roäng BNCNhaän bieát phaàn naøo cuûa KGÑC chöa ñöôïc naïp ?
Boå sung bit côø hieäu ñeå nhaän daïng tình traïng cuûa moät page/segment laø ñaõñöôïc naïp vaøo BNC hay chöa
Cô cheá chuyeån ñoåi qua laïi caùc phaàn cuûa tieán trình giöõa BNC vaøBNP
Swapping...
12/16/2007 Trần Hạnh Nhi 6Caáu truùc moät phaàn töû trong Page Tables
Virtual Memory vôùi cô cheá phaân trang (Paging)
Phaân chia KGÑC thaønh caùc pageDuøng BNP(disk) ñeå môû roäng BNC, löu tröõ caùc phaàn cuûatieán trình chöa ñöôïc naïpBoå sung bit côø hieäu trong Page Table ñeå nhaän daïng tìnhtraïng moät page ñaõ ñöôïc naïp vaøo BNC hay chöa .
12/16/2007 Trần Hạnh Nhi 7
Löu tröõ KGÑC ôû ñaâu ?
Söû duïng boä nhôù phuï ñeå löu tröõ taïm thôøi caùc trang chöa söû duïng
P
RAM
DISK
12/16/2007 Trần Hạnh Nhi 8
Virtual Memory
1virtual address space
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
7 1 5 4 13 2 18physical memory
3
3
12/16/2007 Trần Hạnh Nhi 9
0 0 1 00 0 1 0
Memory Lookup
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0
12-bit offset
Outgoing physical address
4-bit indexinto page tablevirtual page = 0x0010 = 2
Incoming virtual address(0x2004, 8196)
0 010 11 001 12 110 13 000 14 100 15 011 16 000 07 000 08 000 09 101 1
10 000 011 111 112 000 013 000 014 000 015 000 0Page table
0 0 1 0
present bit
0 0 0 0 0 0 0 0 0 1 0 0
(0x6004, 24580)
1 1 0
0 0 0 0 0 0 0 0 0 1 0 0
12/16/2007 Trần Hạnh Nhi 10
0 0 1 00 0 1 0
Memory Lookup
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0
12-bit offset
Outgoing physical address
4-bit indexinto page tablevirtual page = 0x0010 = 2
Incoming virtual address(0x2004, 8196)
0 010 11 001 12 110 03 000 14 100 15 011 16 000 07 000 08 000 09 101 1
10 000 011 111 112 000 013 000 014 000 015 000 0Page table
0 0 1 0
present bit
0 0 0 0 0 0 0 0 0 1 0 0
PAGE FAULT
12/16/2007 Trần Hạnh Nhi 11
Demand Paging
KGVL
i
int i,j;
main ()
{
i = 5;
j = 2;
}
emacs
codeKGDC
i
j
i=5
j=2 gcc
j
Khi naïp moät tieán trình môùi, chæ naïp vaøoBNC page chöùa entry codeKhi truy xuaát ñeán moät chæ thò hay döõ lieäu, page töông öùng môùi ñöôïc naïp vaøo BNC
12/16/2007 Trần Hạnh Nhi 12
Swapping
12/16/2007 Trần Hạnh Nhi 13
Demand Paging + Swapping
KGVL
i
int i,j;
main ()
{
i = 5;
j = 2;
}
emacs
codeKGDC
i
j
i=5
j=2 gcc
j
12/16/2007 Trần Hạnh Nhi 14
Boä nhôù aûo = “True lie“
Ngöôøi duøng : sôû höõu boä nhôù “voâ haïn”, “rieâng bieät”Heä ñieàu haønh : “thaàm laëng” thöïc hieän quaù trình swapping
RAMDISK
# of references
Memory address
10% RAM+
90% DISK
12/16/2007 Trần Hạnh Nhi 15
Thöïc hieän Boä nhôù aûo
Baûng trang : theâm 1 bit valid/invalid ñeå nhaän dieän trangñaõ hay chöa ñöôïc naïp vaøo RAM
Truy xuaát ñeán moät trang chöa ñöôïc naïp vaøo boä nhôù :loãi trang (page fault)
17 14183 0177 15721 0
Disk
Mem
Frame valid/invalid
Page Tables
12/16/2007 Trần Hạnh Nhi 17
Xöû lyù loãi trang
Boä nhôù vaät lyù
M
Boä nhôù aûo
naïp M
OS
Page Table
truy xuaát1
2loãi trang
3 xaùc ñònh vò trí löu trang treân ñóa
3’swap out
trang naïn nhaân
4 mang trangcaàn truy xuaát
vaøo boä nhôù
5caäp nhaät
baûng trang
6
taùi kích hoaïttieán trình
frame troáng
i
12/16/2007 Trần Hạnh Nhi 18
Caùc böôùc xöû lyù loãi trang
1. Kieåm tra truy xuaát ñeán boä nhôù laø hôïp leä hay baát hôïp leä2. Neáu truy xuaát baát hôïp leä : keát thuùc tieán trình
Ngöôïc laïi : ñeán böôùc 33. Tìm vò trí chöùa trang muoán truy xuaát treân ñóa.4. Tìm moät khung trang troáng trong boä nhôù chính :
a. Neáu tìm thaáy : ñeán böôùc 5b. Neáu khoâng coøn khung trang troáng, choïn moät khung trang naïn nhaân ñeå swap
out, caäp nhaät baûng trang töông öùng roài ñeán böôùc 55. Chuyeån trang muoán truy xuaát töø boä nhôù phuï vaøo boä nhôù chính : naïp
trang caàn truy xuaát vaøo khung trang troáng ñaõ choïn (hay vöøa môùi laøm troáng ) ; caäp nhaät noäi dung baûng trang, baûng khung trang töông öùng.
6. Taùi kích hoaït tieán trình ngöôøi söû duïng.
12/16/2007 Trần Hạnh Nhi 19
Caùc caâu hoûi
1. Choïn trang naøo ñeå naïp ? => Chieán löôïc naïp
Demand Paging / Prepageing
2. Choïn trang naïn nhaân ? => Chieán löôïc thay theá trang
FIFO / OPTIMAL/LRU
3. Caáp phaùt khung trang => Chieán löôïc caáp phaùt khung trang
Coâng baèng/ Tyû leä...
12/16/2007 Trần Hạnh Nhi 20
Chieán löôïc naïp
Quyeát ñònh thôøi ñieåm naïp moät/nhieàu page vaøo BNCNaïp tröôùc : laøm sao bieát ? =>prepagingNaïp sau : taàn suaát loãi trang cao ? => pure demand paging
Prepaging : Naïp saün moät soá trang caàn thieát vaøo BNC tröôùc khi truy xuaát chuùng
Demand paging : Chæ naïp trang khi ñöôïc yeâu caàu truy xuaát ñeán trang ñoù
ld init pages ld page ld page ld page ...
init pages = ?
12/16/2007 Trần Hạnh Nhi 21
Chieán löôïc thay theá trang (Page Replacement)Muïc tieâu :
thay theá trang sao cho taàn suaát xaûy ra loãi trang thaáp nhaátÑaùnh giaù
Söû duïng soá frame cuï theåGiaû söû coù moät chuoãi truy xuaát cuï theå
adresse : 0100, 0432, 0101, 0612, 0102, 0103, 0104, 0611# page : 1, 4, 1, 6, 1, 1, 1, 6,
Thöïc hieän moät thuaät toaùn thay theá trang treân chuoãi truy xuaát naøyÑeám soá loãi trang phaùt sinh
Chuoãi truy xuaát7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 13 frames
12/16/2007 Trần Hạnh Nhi 22
Chieán löôït thay theá trang
FIFOOptimalLRU (Least Recently Used)
12/16/2007 Trần Hạnh Nhi 23
Chieán löôïc thay theá trang FIFO
Nguyeân taéc : Naïn nhaân laø trang “giaø” nhaátÑöôïc naïp vaøo laâu nhaát trong heä thoáng
Thöïc hieänLöu thôøi ñieåm naïp, so saùnh ñeå tìm min
Chi phí caoToå chöùc FIFO caùc trang theo thöù töï naïp
Trang ñaàu danh saùc laø naïn nhaânNhaän xeùt
Ñôn giaûnCoâng baèng ?Khoâng xeùt ñeán tính söû duïng !
Trang ñöôïc naïp vaøo laâu nhaát coù theå laø trangcaàn söû duïng thöôøng xuyeân !
addvictim
12/16/2007 Trần Hạnh Nhi 24
Ví duï : FIFO
7 0 1 00 32 4 2 0 3 2 1 2 0 ...
7 7 7 22 27 2 4 4 0 0 0 0 0
0 0 30 00 3 3 2 2 2 2 1 1
1 11 11 0 0 3 3 3 3 3 2
* * * *** * * * * *
2
3
0
4
2
3
4
0
*
2
3
0
1
2
12/16/2007 Trần Hạnh Nhi 25
FIFO vaø hieäu öùng Belady
Söû duïng caøng nhieàu frame...caøng coù nhieàu loãi trang !
12/16/2007 Trần Hạnh Nhi 26
Chieán löôïc thay theá trang : Optimal
AGBDCABCABCGABC
victim
Cur page
Nguyeân taéc : Naïn nhaân laø trang laâu söûduïng ñeán nhaát trong töông lai
Laøm sao bieát ?Nhaän xeùt
Baûo ñaûm taàn suaát loãi trang thaáp nhaátKhoâng khaû thi !
12/16/2007 Trần Hạnh Nhi 27
Ví duï : Optimal
7 0 1 00 32 4 2 0 3 2 1 2 0 ...
7 7 7 22 27
0
2
4
2 2 2 2 0
0 0 00
1
0
2
4
2
0 0
3
0 1
1 31
0
1 3 3 3 3 3
0
1 2
* * * ** * * *
2
3
4
3
2
3
4 0
1
12/16/2007 Trần Hạnh Nhi 28
Chieán löôïc thay theá trang : LRU
AGBDCABCABCGABC
victim
Cur page
Nguyeân taéc : Naïn nhaân laø trang laâu nhaátchöa söû duïng ñeán trong quaù khöù
Nhìn lui : ñuû thoâng tinNhaän xeùt
Xaáp xæ Optimal Thöïc hieän ?
12/16/2007 Trần Hạnh Nhi 29
Ví duï : LRU
7 0 1 00 32 4 2 0 3 2 1 2 0 ...
7 7 7 22 27 2 4
2
0 0 0 1 1
0 0 00
1
0
3
0
4
3 3
2
3 3
1 31
0
1
0
3
3
2 2
3
2 2
* * * ** * * *
2
3
4
3
4
2
0
0 1
3
* *
0
*
2
12/16/2007 Trần Hạnh Nhi 30
Thöïc hieän LRU
Söû duïng boä ñeám:Theâm tröôøng reference time cho moãi phaàn töû trong baûng trang Theâm vaøo caáu truùc cuûa CPU moät boä ñeám counter. moãi laàn coù söï truy xuaát ñeán moät trang trong boä nhôù
giaù trò cuûa counter taêng leân 1.giaù trò cuûa counter ñöôïc ghi nhaän vaøo reference time cuûa trang töông öùng.
thay theá trang coù reference time laø min .
Söû duïng stack:toå chöùc moät stack löu tröõ caùc soá hieäu trangmoãi khi thöïc hieän moät truy xuaát ñeán moät trang, soá hieäu cuûa trang seõ ñöôïc xoùa khoûi vò trí hieän haønh trong stack vaø ñöa leân ñaàu stack. trang ôû ñænh stack laø trang ñöôïc truy xuaát gaàn nhaát, vaø trang ôû ñaùy stack laøtrang laâu nhaát chöa ñöôïc söû duïng..
12/16/2007 Trần Hạnh Nhi 31
Thöïc hieän LRU vôùi stack
12/16/2007 Trần Hạnh Nhi 32
Thöïc hieän LRU : thöïc teá
Heä thoáng ñöôïc hoã trôï phaàn cöùng hoaøn chænh ñeå caøi ñaët LRU ?Ñöøng coù mô !
Heä thoáng chæ ñöôïc trang bò theâm moät bit reference :gaén vôùi moät phaàn töû trong baûng trang.ñöôïc khôûi gaùn laø 0ñöôïc phaàn cöùng ñaët giaù trò 1 moãi laàn trang töông öùng ñöôïc truy caäpñöôïc phaàn cöùng gaùn trôû veà 0 sau töøng chu kyø qui ñònh tröôùc.
Bit reference chæ giuùp xaùc ñònh nhöõng trang coù truy caäp, khoâng xaùc ñònh thöù töïtruy caäp
Khoâng caøi ñaët ñöôïc LRUXaáp xæ LRU...
frame protectmodifyreference
12/16/2007 Trần Hạnh Nhi 33
4-53
bit referencecaùc bits history
thôøi gian
00000
01010
10110
01010
11000
Xaáp xæ LRU : Söû duïng caùc bits History
söû duïng theâm N bit history phuï trôïSau töøng chu kyø, bit reference seõ ñöôïc cheùp laïi vaøo moät bit history tröôùc khi bi reset
N bit history seõ löu tröõ tình hình truy xuaát ñeán trang trong N chu kyø cuoái cuøng.
Thôøi gian
00000
01010
01010
Thôøi gian
00000
01010
10110
01010
10110
Thôøi gian
00000
01010
10110
01010
01010
10110
01010
Thôøi gian
00000
01010
10110
01010
11000
01010
10110
01010
11000
12/16/2007 Trần Hạnh Nhi 38
Xaáp xæ LRU : Cô hoäi thöù 2 (Clock algorithme)
Söû duïng moät bit reference duy nhaát. Choïn ñöôïc trang naïn nhaân theo FIFO Kieåm tra bit reference cuûa trang ñoù :
Neáu reference = 0, ñuùng laø naïn nhaân roài ☺Neáu reference = 1, cho trang naøy moät cô hoäi thöù hai
reference = 0thôøi ñieåm vaøo Ready List ñöôïc caäp nhaät laïi laø thôøi ñieåm hieän taïi.
Choïn trang FIFO tieáp theo...Nhaän xeùt :
Moät trang ñaõ ñöôïc cho cô hoäi thöù hai seõ khoâng bò thay theá tröôùc khi heä thoáng ñaõ thay theá heát nhöõng trang khaùc. Neáu trang thöôøng xuyeân ñöôïc söû duïng, bit reference cuûa noù seõ duy trì ñöôïc giaù trò 1, vaø trang haàu nhö khoâng bao giôø bò thay theá.
12/16/2007 Trần Hạnh Nhi 39
4-55
page#0
page#0
page#1
page#1
page#0
page#1
page#1
Trang FIFO
Naïn nhaân
1
1
0
1
0
0
0
0
Trang FIFO
Xaáp xæ LRU : Cô hoäi thöùc 2 (Clock algorithme)
1
12/16/2007 Trần Hạnh Nhi 40
Xaáp xæ LRU : NRU
Söû duïng 2 bit Reference vaø Modify Vôùi hai bit naøy, coù theå coù 4 toå hôïp taïo thaønh 4 lôùp sau :
(0,0) khoâng truy xuaát, khoâng söûa ñoåi(0,1) khoâng truy xuaát gaàn ñaây, nhöng ñaõ bò söûa ñoåi(1,0) ñöôïc truy xuaát gaàn ñaây, nhöng khoâng bò söûa ñoåi(1,1) ñöôïc truy xuaát gaàn ñaây, vaø bò söûa ñoåi
Choïn trang naïn nhaân laø trang coù ñoäöu tieân cao nhaát khi keát hôïp bit R vaø bit M
111
012
103
004
MRPriority
12/16/2007 Trần Hạnh Nhi 41
Chieán löôïc caáp phaùt frame
Soá frame caàn caáp phaùt cho moãi tieán trình ?Giaûi söû coù m frame vaø n processCaáp phaùt coâng baèng: #frame(Pi) = m/n
Coâng baèng ???Caáp phaùt theo tyû leä: #frame(pi) = (si / (Σ si ))* m
si = kích thöôùc cuûa boä nhôù aûo cho tieán trình piLoãi trang xaûy ra tieáp theo, caáp phaùt theâm frame cho tieán trình nhö theá naøo ?
Tuøy thuoäc chieán löôïc thay theá trangCuïc boä : chæ choïn trang naïn nhaân trong taäp caùc trang cuûa tieán trình phaùt sinh loãi trang -> soá frame khoâng taêngToaøn cuïc: ñöôïc choïn baát kyø trang naïn nhaân naøo (duø cuûa tieán trình khaùc) -> soá frame coù theå taêng, loãi trang lan truyeàn
12/16/2007 Trần Hạnh Nhi 42
Thay theá trang toaøn cuïc vaø...keát cuïc bi thaûm !
Taát caû caùc tieán trình baän roän thay theá trang !
Running CPU IO
P1P2P1P3
P1, errorP1
P1, swap outP2, error P2, swap out
P3, error
12/16/2007 Trần Hạnh Nhi 43
Thrashing
Taát caû tieán trình ñaàu baän roän xöû lyù loãi trang !IO hoaït ñoäng 100 %, CPU raûnh ! Heä thoáng ngöøng treä
Real mem
P1 P2 P3
Virtual Memory = Tha hoà xaøi boä nhôùThrashing = aûo töôûng suïp ñoå !Caùc tieán trình trong heä thoáng yeâu caàu boä nhôù nhieàu hôn khaûnaêng cung caáp cuûa heä thoáng !
12/16/2007 Trần Hạnh Nhi 44
Thrashing Diagram
Why does paging work?Locality model
Process migrates from one locality (working set) to anotherWhy does thrashing occur?Σ size of working sets > total memory size
12/16/2007 Trần Hạnh Nhi 45
Nguyeân nhaân Thrashing
Chæ coù theå kieåm soaùt thrashing do nguyeân nhaân 3.
1. Tieán trình khoâng taùi söû duïng boä nhôù (quaù khöù != töông lai)
2. Tieán trình taùi söû duïng boä nhôù, nhöng vôùi kích thöôc lôùn hôn
3. Quaù nhieàu tieán trình trong heä thoáng
12/16/2007 Trần Hạnh Nhi 46
Working set (1968, Denning)
Working set:Working set = taäp hôïp caùc trang tieán trình ñang truy xuaát taïi 1 thôøi ñieåm
Caùc pages ñöôïc truy xuaát trong Δ laàn cuoái cuøng seõ naèm trong working set cuûa tieán trìnhΔ : working set parameterKích thöôùc cuûa WS thay ñoåi theo thôøi gian tuøy vaoø locality cuûa tieán trình
12/16/2007 Trần Hạnh Nhi 47
Working-Set Model
Δ ≡ working-set window ≡ soá laàn truy caäpVD: 10,000 instruction2 6 1 5 7 7 7 7 5 1 6 2 3 4 1 2 3 4 4 4 3 4 3 4 4 4 1 3 2 3 Δ=10WS(t1) = {1,2,5,6,7}, WS(t2) = {3,4}
WSSi (working set of Process Pi) =toång soá trang ñöôïc truy caäp trong Δ laàn gaàn ñaây nhaátD = Σ WSSi ≡ Toång caùc frame caàn cho N tieán trình trongheä thoángif D > m ⇒ Thrashing
if D > m, choïn moä/moät soá tieán trình ñeå ñình chæ taïm thôøi.
12/16/2007 Trần Hạnh Nhi 48
Giaûi quyeát thrasing vôùi moâ hình Working set
Söû duïng Working setCache partitioning: Caáp cho moãi tieán trình soá frame ñuûchöùa WS cuûa noùPage replacement: öu tieân swap out caùc non-WS pages. Scheduling: chæ thi haønh tieán trình khi ñuû choã ñeå naïp WS cuûa noù
12/16/2007 Trần Hạnh Nhi 1
BAØI GIẢNG 8 : LIEÂN LAÏC GIÖÕA CAÙC TIEÁN TRÌNH
CÔ CHECÔ CHEÁÁ ??VAVAÁÁN N ÑÑEEÀÀ ??TRAO TRAO ÑÑOOÅÅI THOÂNG TIN GII THOÂNG TIN GIÖÖÕA CAÕA CAÙÙC TIEC TIEÁÁN TRÌNHN TRÌNH
GGÆÆAI PHAAI PHAÙÙP ?P ?
12/16/2007 Trần Hạnh Nhi 2
Nhu Caàu Lieân Laïc
Q
LP
Chia seû thoâng tin
R
Phoái hôïp xöû lyùP
JOB
R1
R2
LQ
12/16/2007 Trần Hạnh Nhi 3
Caùc cô cheá lieân laïc
Chia seû taøi nguyeân chungSignalPipeShared Memory
Trao ñoåi thoâng ñieäpMessageSocket
12/16/2007 Trần Hạnh Nhi 4
IPC theo nguyeân taéc chia seû taøi nguyeân chung
User Process User Process
OS - Kernelshared resources
Caùc tieán trình chia seû
Memory
File System Space
Communication Facilities, Common communication protocol
12/16/2007 Trần Hạnh Nhi 5
SignalSignal
MeaningHandler
Ñònh nghóa tröôùc khi thöïc hieän lieân laïcSIGINT, SIGSTOP…SIGUSR1, SIGUSER2
Hoã trôï lieân laïcKernel vôùi User Process
Process ErrorTimerChild Process keát thuùc…
User process vôí nhauTerminate ProcessSuspend, Resume…
OS
Process
Signal handler
Signal Action
Signal
Name Value Function
SIGHUP 1 Terminal hangup
SIGINT 2 Interrupt by user: generated by < CTRL C >
SIGQUIT 3 Quit by user: generated by < CTRL \ >
SIGFPE 8 Floating point error such as divide by zero
SIGKILL 9 Kill the process
SIGUSR1 10 User defined signal 1
SIGSEGV 11 Segment violation: process has tried to access memory not assigned to it
SIGUSR2 12 User defined signal 2
SIGALRM 14 Timer set with alarm() function has timed out
SIGTERM 15 Termination request
SIGCHLD 17 Child process termination signal
SIGCONT 18 Continue after a SIGSTOP or SIGSTP signal
SIGSTOP 19 Stop the process
SIGTSTP 20 Terminal stop: generated by < CTRL Z >
SIGWINCH 28 Change of window size
12/16/2007 Trần Hạnh Nhi 7
Nhaän xeùt Signals
Lieân laïc khoâng ñoàng boäKhoâng bieát tröôùc thôøi ñieåmThieáu tin caäy
Khoâng cho pheùp trao ñoåi döõ lieäu
Sig
Result
L
Q
SH
LQ
Quiz : OK
?
A B
12/16/2007 Trần Hạnh Nhi 8
Pipes
PipeKernel buffer (File) coù kích thöôùc giôùi haïn (4K, 8K…)HÑH cung caáp haøm WritePipe & ReadPipe
WritePipe khi Pipe ñaày ?ReadPipe khi Pipe roãng ?
Phaûiù xeùt ñeán caùc khaû naêng ñoàng boä
Hoã trôï lieân laïc (UNIX original )Giöõa 2 tieán trình Cha - ConMoät chieàuKhoâng caáu truùc (byte transfer)
WritePipe() ReadPipe()
LQ B……….AAB AB
12/16/2007 Trần Hạnh Nhi 9
Nhaän xeùt Pipe
Öu ñieåm :Cho pheùp trao ñoåi döõ lieäu khoâng caáu truùc
Khuyeát ñieåmChi phí thöïc hieän cao (system call)Lieân laïc giöõa 2 tieán trìnhLieân laïc moät chieàu
Pipe trong caùc HÑH hieän ñaïi :Anomynous Pipe : This…Named Pipe : Unix , Windows NT…
Truyeàn döõ lieäu coù caáu truùcLieân laïc 2 chieàu
12/16/2007 Trần Hạnh Nhi 10
Shared Memory
Shared Memory:Laø moät phaàn khoâng gian nhôù khoâng thuoäc sôû höõu cuûa tieán trìnhnaøoÑöôïc HÑH taïo raCaùc tieán trình coù theå aùnh xaï ñòa chæ vaøo khoâng gian chia seû naøyñeå truy xuaát döõ lieäu (nhö ñoái vôùi khoâng gian noäi boä)
Khoâng giôùi haïn soá löôïng tieán trình, chieàu trao ñoåi, vaø thöù töïtruy caäp
Maâu thuaãn truy xuaát - > nhu caàu ñoàng boä
12/16/2007 Trần Hạnh Nhi 11
IPC theo nguyeân taéc trao ñoåi thoâng ñieäp
User Process
OS-Kernel
User Process
OS-Kernel
Network
Khoâng coù boä nhôù chungCaàn coù ñöôøng keát noái giöõa caùc maùy tính
12/16/2007 Trần Hạnh Nhi 12
Message
MessageDöõ lieäu coù caáu truùùcCaáu truùc vaø thoâng dòch msg ñöôïc thoûa thuaän giöõa 2 tieán trình lieânlaïc
HÑH cung caáp 2 primitive chínhsend(destination, message)receive(source, message)
Caùc vaán ñeà quan taâm :Direct or indirect addressingBlocking or non-blocking communicationReliable or unreliable communicationBuffered or un-buffered communication
12/16/2007 Trần Hạnh Nhi 13
Ñònh daïng Message
12/16/2007 Trần Hạnh Nhi 14
Nhaän xeùt message
Laø cô cheá IPC toång quaùtHoã trôï lieân laïc giöõa caùc tieán trính treân cuøng maùyHoã trôï lieän laïc giöõa caùc tieán trính trong heä thoáng phaân taùn
Lieân laïc giöõa caùc heä thoáng khoâng ñoàng nhaát ?
12/16/2007 Trần Hạnh Nhi 15
Máy A
(UNIX)Máy B
(Windows)
Lieân laïc giöõa caùc heä thoáng khoâng ñoàng nhaát
P1
P2
Send( ) //UNIX
Receive( ) //WIN
12/16/2007 Trần Hạnh Nhi 16
Socket
Endpoint cuûa moät keát noái 2 chieàuTöông ñöông vôùi moät network interface (hardware)
Cho pheùp caùc öùng duïng “plug in” vaøo maïng moät caùch aån duïLaø moät giao dieän laäp trình maïng
Cho pheùp caùc tieán trình lieân laïc 2 chieàu vôùi nhauThieát laäp lieân laïc : taïo 2 socket, keát noái chuùng vôùi nhau
Socket descriptionSöû duïng moät transport protocolCaàn ñaëc taû IPaddress vaø port keát noái
Ñöôïc hoã trôï ñaàu tieân trong Berkeley socketLaø söï môû roäng cuûa nhaäp xuaát file tröøu töôïngHieän nay ñöôïc hoã trôï trong haàu heát HÑH hieän ñaïi
12/16/2007 Trần Hạnh Nhi 17
12/16/2007 Trần Hạnh Nhi 18
Socket Communication
12/16/2007 Trần Hạnh Nhi 19
Máy A
(UNIX)
Máy B
(Windows)
Lieân laïc giöõa caùc heä thoáng khoâng ñoàng nhaát
P1
P2
Send( )
Receive( )
Socket
Socket
12/16/2007 Trần Hạnh Nhi 20
Lieân laïc thoâng qua Socket
Hoã trôï 2 phöông thöùc lieân laïcConnection-oriented (TCP/IP)
StreamReliableBi-directional communication
Connectionless (UDP/IP)DatagramUnreliableBi-directional communication
Cho pheùp lieân laïc giöõa caùc tieán trình treân caùc maïng khoângñoàng nhaát
12/16/2007 Trần Hạnh Nhi 21
Phöông thöùc Connection-Oriented
Thöïc hieän treân TCP (Transmission Control Protocol.)Phaûi thöïc hieän keát noái giöõa 2 tieán trình tröôùc khi trao ñoåi döõ lieäu
Töông töï heä thoáng ñieän thoaïiDöõ lieäu ñöôïc phaân phoái
in sequence.guaranteed.
Keát noái keát thuùc khi lieân laïc chaám döùt2 modes:
Iterative (synchronous)Concurrent (asynchronous)
12/16/2007 Trần Hạnh Nhi 22
Phöông thöùc Connectionless
Thöïc hieän treân UDP (User Datagram Protocol)Khoâng yeâu caàu keát noái toàn taïi tröôùc khi truyeàn döõ lieäu
Töông töï heä thoáng thö tínDöõ lieäu truyeàn coù theå bò maát maùt hay khoâng ñuùng traät töï
2 modes:Iterative (synchronous)Concurrent (asynchronous)
12/16/2007 Trần Hạnh Nhi 23
Caáu truùc ñòa chæ Socket
Generic socket address structure:struct sockaddr {
sa_family_t sa_family; /* address family */char sa_data[14]; /* socket address */
};
A popular BSD-derived implementation:struct sockaddr_in {
sa_family_t sin_family; /* address family */in_port_t sin_port; /* protocol port number */struct in_addr sin_addr; /* IP addr in NW byte
order */char sin_zero[8]; /* unused, set to zero */
};
12/16/2007 Trần Hạnh Nhi 24
Port Numbers
Port laø 1 khaùi nieäm tröøu töôïng ñöôïc TCP/UDP söû duïngñeå phaân bieät caùc öùng duïng treân moät maùy chuûMoät port ñöôïc xaùc ñònh baèng 1 soá nguyeân 16 bit laø port number.
3 mieàn giaù trò ñöôc daønh choWell-known ports (0-1023)Registered ports (1024-49151)Dynamic ports (49512 – 65535)
12/16/2007 Trần Hạnh Nhi 25
Some Well-Known Ports
12/16/2007 Trần Hạnh Nhi 26
Socket Types
Socket types:SOCK_STREAM
Stream socket (TCP)SOCK_DGRAM
Datagram socket (UDP)SOCK_RAW
Raw socket (talk to IP directly)
12/16/2007 Trần Hạnh Nhi 27
Socket Primitives
Keát thuùc keát noáiCloseNhaän döõ lieäu qua keát noái ñaõ thieát laäpReceiveGôûi döõ lieäu qua keát noái ñaõ thieát laäpSendChuû ñoäng thöïc hieän keát noáiConnectKhoaù caller ñeán khi coù 1 yeâu caàu keát noáiAcceptThoâng baùo saün saøng “laéng nghe” (tieáp nhaän keát noái)ListenKeát buoäc moät local address vôùi 1 socketBindTaïo 1 communication endpointSocket
YÙ nghóaPrimitive
12/16/2007 Trần Hạnh Nhi 28
TCP System Calls
bind()
listen()
socket()
socket()
accept()
read()
write()
connect()
write()
read()
blocks until connection from client
process request
Server
Client
close() close()
12/16/2007 Trần Hạnh Nhi 29
UDP System Calls
socket()
bind()
recvfrom()
sendto()
socket()
recvfrom()
sendto()blocks until data received from a client
process request
data(request)
data(reply)
Server
Client
close()