Subprofile concurrency làm rõ hơn khái niệm trừu tượng concurrency trong cốt lõi của UML. Mô hình lĩnh vực cho subprofile này được trình bày ở hình 5.13. Khái niệm trung tâm là CocurrentUnit. Một ConcurrentUnit (CU) là một loại ActiveResource, một ActiveResource là một thể hiện của ResourceInstance như đã thảo luận ở 5.2.1. Một ActiveResource là một thể hiện tài nguyên có thể tự nó sinh ra kích thích của nó concurrently, có nghĩa là độc lập với các hoạt động khác. Một
được tài nguyên cung cấp). Đây là thứ gần tương ứng nhất với khái niệm luồng, tác vụ, tiến trình trong lĩnh vực hệ điều hành.
Hình 5.13
Tiếp theo CU có một thao tác main() gọi kịch bản main, kịch bản này được tạo nên từ một ập các ActionExecutions và liên quan tới một hay nhiều thể hiện dịch vụ tài nguyên. Nhưng thể hiện dịch vụ tài nguyên này có thể là trì hoãn được (deferred) hay ngay lập tức (immediate), chúng có thể là cục bộ (tại chỗ -local) hay là từ xa (remote). Một thể hiện dịch vụ ngay lập tức kiểm soát những yêu cầu đi vào ngay lập tức, spawning những thread mới để làm được việc đó nếu cầu (local threading) hay giả sử những thread đã tồn tại sẽ kiểm soát nó (remote threading). Khi một thể hiện dịch vụ là deferred, yêu cầu hay kích thích đợi tới khi server nhận kích thích sẵn sàng xử lý nó. CU có thể hợp tác bằng cách gửi kích thích cho nhau – điều này có thể thực hiện được thông qua thực thi các hành động thông điệp đồng bộ hay không đồng bộ.
Mô hình lĩnh vực này được thể hiện trong chuẩn UML dưới dạng một tập các stereotype và các thẻ như trong bảng 5.5 và 5.6
Trong hình 5.14 là kịch bản minh họa các thẻ của subprofile concurrency được sử dụng để chỉ ra những thuộc tính chất lượng dịch vụ tương ứng. Atrial Timer và AtrialModel cũng là một stereotype <<TRtimer>>. Những thông điệp
khác nhau được stereotype để cho phép sử dụng những thẻ phù hợp cho những thông điệp để nêu rõ các chất lượng dịch vụ. Ví dụ, thông điệp toInhibiting được stereotype là một <<RTevent>> với thẻ RTat nêu rõ { RTat = (0, 'ms') }. Thao tác set() gán giá trị và khởi động timer được stereotype là một kiểu <<RTstart>>. Một số thực thi hành động được stereotype hoặc là <<CRSynch>> hay <<CRAsynch>> phụ thuộc vào việc chúng có được thực hi trong các luồng của đối tượng gọi nó. Một số cũng được stereotype là <<RTAction>> để có thể gán thẻ RTDuration nêu thời gian thực thi QoS cho hành động.
Hình 5.14.
Stereotype Áp dụng cho (metaclasses) Tags Mô tả
SubactivityState, Transition, State
«CRasynch» Action, ActionExecution Một lời gọi không đồng bộ
«CRconcurrent» Node, Component, Artifact, Class, Instance
CRmain Một khai niệm đơn vị song song
«CRcontains» Usage Một khái niệm sử dụng được sinh ra/ tổng quát hóa «CRceferred» Operation, Reception, Message,
Stimulus
Một sự nhận được trì hoãn (deferred receive)
«CRimmediate» Operation, Reception, Message, Stimulus {remote, local} Một thể hiện của một dịch vụ …. (immediate service) «CRmsgQ» Instance, Object, Class,
ClassifierRole
Một hàng đợi các kích thích (stimulus queue)
«CRSynch» Action, ActionExecution Một lời gọi đồng bộ ( synchronous invocation)
Bảng 5.6 Các thẻ song song
Thẻ Kiểu Multiplicity Mô tả
CRatomicRTend Boolean [0..1] Cho biết một CRAction thế thể là ngắt được hay là atomic. CRmain Một tham chiếu tới
một phương thức hay một xâu chứa đường dẫn tới phương thức.
[0..1] Xác định phương thức chính của một đơn vị song song, chẳng hạn như một luồng.
CRthreading enumeration of { 'remote', 'local'}
[0..1] Xác định một lời gọi stereotype «CRImmediate» của một thao tác,
Thẻ Kiểu Multiplicity Mô tả
một phương thức hay việc
nhận/gửi một tín hiệu kích thích là remote hay local.
5.2.4 Subprofile Mô hình hóa khả năng lập lịch được
Các subprofile trước gồm mô hình tài nguyên chung, thời gina và concurrency cung cấp những stereotype và thẻ hữu ích cho việc đặc tả chất lượng dịch vụ quan trọng, nhưng trong subprofile này đề cập tới những khái niệm quan trọng và phổ biến nhất của phân tích khả năng lập lịch được.
Mô hình lĩnh vực cốt lõi của profile khả năng lập lịch được được trình bày ở hình 5.15. Mô hình lĩnh vực này gắn kết các mô hình lĩnh vực khác, các mô hình lĩnh vực đó có thể là lớp con của các lớp trong các profile trước. Ví dụ như SAction là lớp con của Timed Action (của gói TimedEvents trong subprofile time), RealTimeSituation là một lớp con của AnalysisContext (từ lớp ResourceUsageModel trong subprofile Mô hình tài nguyên chung), một ExecutionEngine là một kiểu con của ActiveResource, Processor và ProtectedResource (tất cả là của gói ResourceType của subprofile Mô hình tài nguyên chung), một SResource là một lớp con của ProtectedResource (ibid) và SchedulableResource là lớp con của cả SResource và ActiveResource.
Một SAction, hay schedulabe action có thể cứa những hành động lồng nhau. Các thuộc tính QoS của một SAction có thể thu được nếu cần nhờ các thuộc tính QoS của các phần con của nó. SActions có một số lượng lớn cá thẻ có thể được sử dụng cho phân tích khả năng lập lịch được như Sapriority, Sablocking, SaworstCase (thời gian tính toán trong trường hợp xấu nhất)… và cả những thuộc tính được thừa kế từ siêu lớp TimedAction. Nhữn bộ máy hành động này có thể là CPU, hệ điều hành, hay máy ảo chạy các bộ lập lịch công việc. Mộ bộ lập lịch công việc liên quan tới một trigger khởi động và một phản hồi – một dãy hành động mà được lập lịch một cách độc lập trên một máy thực thi. Một phản hồi là một lớp con của SAction nhưng có thêm một số khía cạnh của QoS như hệ số sử dụng, thời gian trống, sparecapacity, và bao nhiêu thể hiện của phản hồi có thể chồng thực thi trong trường hợp lỡ các thời hạn.
Một SResource là một loại Protected Resouce được truy xuất trong quá trình thực thi một bộ lập lịch công việc. Vì nó có thể được chia sẻ bởi những hành động thực thi song song, nó phải được bảo vệ nhờ khóa loại trừ lẫn nhau như semaphore hay bởi chính sách cấm truy cập đồng thời. Ví dụ về SResource như hàng đợi chia sẻ, A/D converter. Một SchedulableResource là một loại SResource được sử dụng để thực thi một hay một tập hành động. Lớp lĩnh vực này biểu diễn một tác vụ, một
luồng hay một tiến trình trong thế giới OS. Những khái niệm lĩnh vực này được ánh xạ thành các stereotype và các giá trị đính thẻ được liệt kê ở bảng 5.7 tới bảng 5.12.
Bảng 5.7
Stereotype
Áp dụng cho
(metaclasses) Tags Mô tả
«SAaction» (subclass of «RTaction» and «CRAction») Action, ActionExecution, Stimulus, Message, Method, ActionState, SubactivityState, Transition SApriority, SAbctualPty, SAblocking, SAbeady, SAdelay, SArelease, SApreempted, SAworstCase, SAlaxity, SAabsDeadline, SAaelDeadline, SAusedResource, SAhost Một hành động có thể lập lịch được
«SAengine» Node, Instance, Object, Classifier, ClassifierRole SAschedulingPolicy, SAaccessPolicy, SArate, SAcontextSwitch, SApriorityRange, SApreemptible, SAutilization, SAschedulable, SAresources Một bộ máy thực thi «SAowns» (subclass of «GRMrealize»)
Abstraction Xác định chru sở hữu tài nguyên
Stereotype
Áp dụng cho
(metaclasses) Tags Mô tả
Node SAacquisition, SAdeacquisition, SAptyCeiling, SApreemptible «SAresponse» (subclass of «SAAction») Action, ActionExecution, Stimulus, Message, Method SAutilization, SAspare, SAslack, SAoverlaps Một phản hồi với một tính hiệu kích thích hay một hành động. «SAschedulable» (subclass of «SAResource») Classifier, ClassifierRole, Instance, Object, Node Một tài nguyên có thể lập lịch được «SAscheduler» Classifier, ClassifierRole, Instance, Object SAschedulingPolicy, SAexecutionEngine Một bộ lập lịch
«SAprecedes» Usage Quan hệ thứ tự giữa các hành động hay các trigger «SAsituation» Collaboration, Collaboration Instance, ActivityGraph Một bối cảnh phân tích khả năng lập lịch. «SAtrigger» (subclass of «SAaction»)
Message, Stimulus SAschedulable, SAprecedents
Một trigger
«SAusedHost» Usage Xác định các tài nguyên có thể lập lịch được được sử đụng cho thực thi các hành động.
«SAuses» Usage Xác định các tài nguyên có thể chia sẻ được.
Bảng 5.8
Tag Type Multiplicity Description
SApriority integer [0..1] Áng xạ tới độ ưu tiên của hệ điều hành
SAblocking RTtimeValue [0..1] Thời điểm mà một hành động có thể bị cản trở thực thi bởi một tác vụ có độ ưu tiên thấp hơn, nhưng nó sở hữu tài nguyên đang được yêu cầu. SAdelay RTtimeValue [0..1] Độ dài khoảng thời gian một
hành động sẵ sàng thực thi phải đợi trong khi nó chờ và giải phóng tài nguyên. SApreempted RTtimeValue [0..1] Độ dài khoảng thời gian một
hành động sẵ sàng thực thi bị cản trở thực thi bởi một tác vụ có độ ưu tiên cao hơn.
SAready RTtimeValue [0..1] Độ dài khoảng thời gian giữa thời điểm một hành động sẵn sàng thực thi tới khi nó bắt đầu được thực thi.
SArelease RTtimeValue [0..1] Thời điểm mà một hành động sẵn sàng thực thi.
SAworstCase RTtimeValue [0..1] Khoảng thời gian dài nhất được yêu cầu để một hành động hoàn thành việc thực thi, gồm cả những overheads (bị khóa, bị trễ, bị tức quyền…) SAabs Deadline RTtimeValue [0..1] Thời điểm cuối cùng mà một
Tag Type Multiplicity Description
{ "Hard," "Soft"} hay mềm.
SArel Deadline RTtimeValue [0..1] Với một số thời hạn mềm, thì nêu rõ thời gian kỳ vọng hành động được hoàn thành.
SAused Resource Reference to a model element that is stereotyped «SAResource»
[0..*] Nêu rõ một tập các tài nguyên mà hành động này có thể sử dụng trong quá trình thực thi.
SAhost Reference of a model element that is stereotyped «SASchedulable» [0..1] Định rõ tài nguyên có thể lập lịch được mà các thực thi hành động diễn ra và do vậy có quan hệ triển khai
start time (inherited from TimedAction)
RTtimeValue [0..1] Thời điểm bắt đầu của một hành động.
end time (inherited from TimedAction)
RTtimeValue [0..1] Thời điểm kết thúc của một hành động.
duration (inherited from
TimedAction)
RTtimeValue [0..1] Tổng khoảng thời gian của một hành động (Không được sử dụng khi thời điểm bắt đầu và kết thúc được biết trước) isAtomic
(inherited from Concurrent Action)
Boolean [0..1] Xác định xem một hành động có thể bị tước quyền hay không.
Bảng 5.9
Tag Type Multiplicity Description
SAaccess Policy
Enumeration: { 'FIFO', 'Priority Inheritance', 'NoPreemption',
[0..] Chính sách kiêm soát tài nguyên để xử lý các yêu
Tag Type Multiplicity Description
'HighestLocker', 'PriorityCeiling'}
cầu tài nguyên đồng thời.
SArate Float [0..1] Một hệ số tốc độ tương đối cho bộ máy thực thi, và được biểu diễn dưới dạng %.
SAcontext Switch
Time function [0..1] Độ dài của thời gian cần thiết cho chuyển đổi giữa các công việc lập lịch. SApriority
Range
integer range [0..1] Một tập các độ ưu tiên hợp lệ cho bộ máy thực thi (phụ thuộc hệ điều hành)
SApreemptible Boolean [0..1] Chỉ rõ một bộ máy thực thi có thể bị tước quyền không khi nó bắt đầu thực thi một hành động. SAutilization Percentage (Real) [0..1] Kết quả tính toán được
chỉ rõ phần trăm sử dụng của máy thực thi.
SAscheduling Policy Enumeration: {'RateMonotonic', 'Deadline Monotonic', 'HKL', 'FixedPriority', 'Minimum LaxityFirst', 'Maximum AccurredUtility', 'MinimumSlack Time' } [0..1] Một tập các bộ lập lịch, chúng lập lịch cho các công việc trên máy thực thi hiện tại.
SAschedulable Boolean [0..1] Một kết quả tính toán chỉ rõ các công việc được
Tag Type Multiplicity Description
SAresources Reference to an element stereotyped «SAResource»
[0..*] Các tài nguyên được sở hữu bởi bộ máy thực thi.
Bảng 5.10
Tag Type Multiplicity Description
SAutilization Percentage (Real)
[0..1] Phần trăm khoảng thời gian của trigger trong đó phản hồi sử dụng tài nguyên lập lịch được. The percentage of the period of the trigger during which the response is using the schedulable resource
SAslack RTtimeValue [0..1] Sự khác nhau giữa lượng thời gian cần để hoàn thành công việc và lượng thời gian còn lại trong khoảng thời gian
SAspare RTtimeValue [0..1] Lượng thời gian thực thi có thể thêm được vào công việc lập lịch mà không làm ảnh hưởng khả năng lập lịch được của các công việc lập lịch có độ ưu tiên thấp trong hệ thống.
SAoverlaps Integer [0..1] Trong trường hợp các thời hạn mềm, số lượng thể hiện có thể chồng chéo nhau trong thực thi khi lỡ các thời hạn.
Bảng 5.11
Tag Type Multiplicity Description
SAaccess Control (inherited from Protected Resource) Enumeration: { 'FIFO', 'Priority Inheritance', 'NoPreemption', 'HighestLockers', 'Distributed PriorityCeiling' }
[0..1] Chính sác kiểm soát truy cập để xử lý các yêu cầu từ các công việc lập lịch như FIFO, Priority Ceiling, etc.
Tag Type Multiplicity Description
song song được phép SAacqusition RTtimeValue [0..1] Thời gian hoãn của một
hành động giữa yêu cầu truy xuất tài nguyên và thời điểm cho phép truy xuất
SA deacquisition RTtimeValue [0..1] Thời gian hoãn của một hành động giữa yêu cầu giải phóng tài nguyên và thời điểm hành động sẵn sàng được thực thi tiếp. SA Consumable Boolean [0..1] Chỉ rõ một tài nguyên
đang được sử dụng. SAPtyCeiling Integer [0..1] Độ ưu tiên của công việc
lập lịch có độ ưu tiên cao nhất có thể truy xuất tài nguyên.
SA preemptible Boolean [0..1] Chỉ rõ một tài nguyên có thể bị tước quyền khi đang được sử dụng hay không.
Bảng 5.12
Tag Type Multiplicity Description
SA
schedulable
Boolean [0..1] Một giá trị tính toán được khi trigger là lập lịch được. SAprecedents Reference to a model
element stereotyped as
[0..1] Các hành động được thực thi trước trigger.
Có vẻ như chúng trừu tượng và gây nhầm lẫn do sự rườm ra của các stereotype và các thẻ hơn là từ độ phức tạp mà chúng kế thừa. Trong thực tế, chúng ta sẽ chri sử dụng một tập con nhỏ của những stereotype và thẻ này trong một bài toán phân tích khả năng lập lịch được mà thôi. Những loại phân tích khác nhau sẽ có xu hướng sử dụng những thẻ và stereotype khác nhau.
Ví dụ, xét mô hình trong hình 5.16. Nó chứa 5 đối tượng, mỗi đối tượng sở hữu một luồng. Các thuộc tính của các luồng này như mẫu xuất hiện (“periodic”), khoảng thời gian (period), thời gian thực thi trong trường hợp xấu nhất (worst-case execution time), vv được cung cấp bởi các giá trị đính kèm dưới dạng các ràng buộc. Trong trường hợp này, giá trị độ ưu tiên càng lớn thì độ ưu tiên càng nhỏ, trong mô hình, các lớp có giá trị ưu tiên 100 là những luồng có độ ưu tiên nhỏ nhất. Chú ý rằng, các luồng có độ ưu tiên thấp nhất không có blocking term, theo định nghĩa chúng không thể bị khóa, chỉ preempted. Có 3 tài nguyên (các hàng đợi dạng sóng), các thể hiện khác nhau của cùng một lớp – lớp Waveform. Việc thực hiện phân tích khả năng lập lịch được trên mô hình này tương đối đơn giản.
Đầu tiên, ghi nhớ phương trình phân tích RMA toàn cục trong phương trình 5.2.
Phương trình 5.2 Phân tích đơn nguyên tỉ lệ với blocking.
Trong đó Cj là thời gian thực thi trường hợp xấu nhất của tác vụ j, Tj là khoảng thời gian của tác vụ j, Bj là thời gian blocking của tác vụ j, và n là số lượng tác vụ.
Vì bất phương trình này đúng, chúng ta có thể đảm bảo rằng hệ thống là lập lịch được, có nghĩa là nó luôn thỏa mãn các thời hạn, không quan tâm tới định pha tác vụ.
Phân tích chi tiết hơn có thể thu được bằng cách nhìn vào các dãy hành động hơn là các đối tượng hoạt động. Việc này thường được thực hiện nếu phân tích RMA toàn cục thất bại, khi đó hệ thống không thể được đảm bảo (nhờ phân tích đó) có thể lập lịch được. Phương pháp phân tích toàn cục thường quá mạnh – chỉ bởi vì nó không thể được đảm bảo bởi phương pháp được sử dụng không có nghĩa là nó hoàn toàn không lập lịch được. Nó chỉ có nghĩa là phương pháp phân tích đó không thể đảm bảo được. Tuy nhiên, một phân tích chi tiết hơn có thể đảm bảo được.
Một phân tích chi tiết hơn có thể phân tích một kịch bản cụ thể, hay một lớp kịch bản. Một kịch bản như vậy được trình bày ở hình 5.7. Biểu đồ trình tự này sử dụng của tham số sd và par để các đoạn tương tác con được chạy đồng thời (các đoạn tương tác con ngăn cách bởi các toán hạng ngăn cách). Kịch bản là lập lịch được nếu nó có thể được chứng minh rằng tất cả các phần song song của nó có thể thỏa mãn các thời hạn, gồm cả preemtion do thực thi của các tương tác song song ngang hàng.
Trong kịch bản này, thông tin lập lịch và thời gian được cung cấp trong một khung cảnh chi tiết hơn.
5.2.5 Subprofile Mô hình hóa hiệu quả
Subprofile Phân tích hiệu quả (Performance Analysis-PA) quan tâm tới việc thêm chi tiết vào mô hình để tính toán hiệu quả của mô hình. Cụ thể, profile này sử dụng các khái niệm và các thẻ được định nghĩa trong các profile thời gian, concurrency và tài nguyên để tạo các stereotype và các thẻ có ích cho việc thêm các đơn vị đo định lượng của hiệu quả, để từ đó thực hiện phân tích hiệu quả hệ thống
PA dựa vào thể hiện (ngược lại với dựa vào lớp hay kiểu). Các kịch bản, các dãy các bước với ít nhất bước bắt đầu và bước kết thúc rõ ràng và được liên kết với một tải (workload) hay một thời gian phản hồi. Các tải mở (Open workload) được định nghĩa bởi các dòng yêu cầu dịch vụ chúng có các mẫu xuất hiện đặc trưng bởi thống kê như sử dụng phân tán Gausian hay Poisson. Các tải đóng (closed