Macro processor là một chương trình đọc các tập tin để tìm một số từ khóa. Khi tìm ra một từ khóa thì nó sẽ được thay thế bằng một cụm từ nào đó. Tổ hợp từ khóa cụm từ thay thế được gọi là macro. Ví dụ như là chương trình tiền biên dịch của C. Một Macro là viết tắt cho một chuỗi các hoạt động. Macro được sử dụng để tạo bộ sưu tập dễ dàng hơn và khả thi hơn. Macro được sử dụng để thay thế văn bản và giúp giải quyết các vấn đề như khả năng đọc và đơn giản. Một hoạt động vĩ mô cho phép viết một chuỗi các hướng dẫn lắp ráp và sử dụng tên của nó để thay thế nó. Nó chính là một bộ xử lý ngôn ngữ với cú pháp và quy tắc riêng của mình.
HỆ ĐIỀU HÀNH LỜI NÓI ĐẦU Hệ điều hành là một phần mềm chạy trên máy tính, dùng để điều hành, quản lý các thiết bị phần cứng và các tài nguyên phần mềm trên máy tính Hệ điều hành đóng vai trò trung gian trong việc giao tiếp giữa người sử dụng và phần cứng máy tính, cung cấp một môi trường cho phéo người sử dụng phát triển và thực hiện các ứng dụng của họ một cách dễ dàng Trên cơ sở kiến thức đã học được trong môn nguyên lý Hệ điều hành và trong khuôn khổ tìm hiểu đề tài bài tập lớn về Nguyên lý Macroprocessor: trình bày nguyên lý macroprocessor trong các giai đoạn xây dựng và hoạt động của hệ thống, các vai trò và ý nghĩa của nguyên lý trong các giai đoạn, và cả những điều xảy ra khi nguyên lý bị vi phạm Nguyên lý được trình bày đi kèm theo một đề tài ví dụ minh họa là chương trình tiền biên dịch của C trong Windows để người đọc hình dung ra các bước thực hiện Đề tài được viết ra dựa trên tài liệu giáo trình của khoa, tài liệu trên các trang mạng và một chút hiểu biết của bản thân Do kiến thức còn hạn hẹp và thời gian thực hiện không được nhiều nên đề tài của tôi còn nhiều sai sót Tôi mong có sự đóng góp và sửa chữa để đề tài có tính khả thi và hoàn thiện hơn Em xin cảm ơn thầy Nguyễn Thanh Tùng đã giảng dạy em bộ môn Hệ điều hành này Hà Nội, tháng 10 năm 2013 Sinh viên: Hứa Văn Điểm 1 HỆ ĐIỀU HÀNH Đề tài 02: Trình bày Nguyên lý Macroprocessor Nêu rõ vai trò và ý nghĩa của nguyên lý này trong các giai đoạn xây dựng và hoạt động của hệ thống Điều gì xảy ra khi nguyên lý này bị vi phạm? Cho ví dụ minh họa trong WINDOWS? Phần 1: Khái quát chung I - - - - II - - Định nghĩa Macro processor là gì? Macro processor là một chương trình đọc các tập tin để tìm một số từ khóa Khi tìm ra một từ khóa thì nó sẽ được thay thế bằng một cụm từ nào đó Tổ hợp từ khóa/ cụm từ thay thế được gọi là macro Ví dụ như là chương trình tiền biên dịch của C Một Macro là viết tắt cho một chuỗi các hoạt động Macro được sử dụng để tạo bộ sưu tập dễ dàng hơn và khả thi hơn Macro được sử dụng để thay thế văn bản và giúp giải quyết các vấn đề như khả năng đọc và đơn giản Một hoạt động vĩ mô cho phép viết một chuỗi các hướng dẫn lắp ráp và sử dụng tên của nó để thay thế nó Nó chính là một bộ xử lý ngôn ngữ với cú pháp và quy tắc riêng của mình Ngoài ra Macro còn làm nhiều hơn là chỉ thay thế văn bản nơi nó là cần thiết Một số các tính năng bổ sung của các macro như sau: Macro có thể có các thông số có giá trị có thể được thay thế trong vòng vĩ mô mở rộng Điều này làm cho việc sử dụng vĩ mô năng động hơn Macro có thể được sử dụng để có điều kiện bao gồm mã phụ thuộc vào một số điều kiện.này rất hữu ích cho mã số có thể khác nhau trên kiến trúc khác nhau Macro mà tồn tại trong một vĩ mô Nguyên lý chung của Macroprocessor trong xây dựng và hoạt động của hệ thống Trong hệ thống chỉ có sẵn các chương trình tiếp nhận yêu cầu và các chương trình điều khiển Mỗi khi có yêu cầu đưa vào hệ thống sẽ tạo ra chương trình tương ứng và thực hiện chương trình vừa tạo ra Nguyên lý làm việc này được áp dụng với cả hệ điều hành Trên đĩa không có hệ điều hành mà chỉ có các thành phần, các mô đun từ đó có thể lắp ráp thành hệ điều hành 2 HỆ ĐIỀU HÀNH - Để có thể làm việc với máy tính việc đầu tiên người ta phải nạp hệ thống, bắt đầu từ chương trình mồi – một chương trình nhỏ làm nhiệm vụ đọc một số dữ liệu và chương trình nhỏ, chuyển điều khiển cho chương trình này Chương trình được kích hoạt sẽ đọc tiếp các chương trình và các dữ liệu mới, kích hoạt chúng,…Cứ như vậy cho đến khi có một hệ điều hành hoàn thiện để cùng với máy tính tạo thành một hệ thống đủ khả năng phục vụ người sử dụng Hệ điều hành chỉ thực sự tồn tại sau khi quá trình nạp hoàn thành và tồn tại trong một khoảng thời gian khá ngắn – cho đến khi người dùng đóng và thoát khỏi hệ thống (Shut down) Phần 2: Nội dung trình bày và ví dụ minh họa I Trình bày nguyên lý Macroprocessor? Ví dụ về vĩ mô xử lý cho C trong Windows? Sơ đồ các giai đoạn xây dựng và hoạt động của nguyên lý trong hệ thống: Nạp các phiếu yêu cầu Phân tích Thiết kế, xây dựng các chương trình tương ứng Thực hiện chương trình và cho ra kết quả Vĩ mô xử lý cho C là một ví dụ điển hình về cách macro làm việc trong hội đồng ngôn ngữ dễ nhớ để tạo thành một hệ thống đủ khả năng phục vụ người sử dụng 3 HỆ ĐIỀU HÀNH Yêu cầu về phần cứng và phần mềm trong ví dụ: Các yêu cầu phần cứng và phần mềm cho ví dụ này được giới hạn chỉ có các yêu cầu của một trình biên dịch C trên một máy UNIX hay Windows Yêu cầu phần cứng: Pentium 60 MHz hoặc cao hơn 8 MB Ram hoặc cao hơn 10 MB không gian đĩa cứng miễn phí (không bao gồm không gian hoán đổi cần thiết cho hệ điều hành) Yêu cầu phần mềm: Borland Turbo C trình biên dịch hoặc bất kỳ phiên bản khác phù hợp với IO suối Windows 98 hoặc mới hơn Thực hiện được trên hệ điều hành UNIX với điều chỉnh nhỏ 1 Nạp các phiếu yêu cầu: Để có thể làm việc được với máy tính, việc đầu tiên là chúng ta phải nạp hệ thống(nạp chương trình mồi) Ví dụ chương trình tiền biên dịch của C thì đầu vào phải hợp lệ C/C++ mã nguồn trong tập tin với C 2 Phân tích: Nhiệm vụ này là một nhiệm vụ trước khi xử lý và không có kết quả trong trình biên dịch của mã, nhưng là một bước trước khi biên dịch Macro sẽ giúp giảm thời gian xử lý và các chi phí trong các giai đoạn xây dựng và hoạt động của hệ thống: - Ít sử dụng các chức năng cho gọi mã lặp đi lặp lại - Ít tốn kém hơn khi các chức năng ít được sử dụng - Giảm thời gian xử lý (Mặc dù, mã có thể được lặp đi lặp lại, nó là cần thiết và không cần thiết Vì vậy, mã nguồn vẫn còn hiệu quả) - Công cụ lập trình được sử dụng bao la - Giúp giảm mã spaghetti và cuối cùng làm cho mã dễ đọc hơn - Giúp với việc sử dụng các biến thậm chí trong mã lặp đi lặp lại Tương tự như các thông số cho chức năng, nhưng mà không có phí - Thay thế văn bản trong mã như người sử dụng mong muốn và không chứa tài liệu tham khảo cũng không con trỏ - Sử dụng các công cụ tiền xử lý để chuẩn bị nguồn mã cho biên soạn 4 HỆ ĐIỀU HÀNH - Biên soạn có điều kiện tùy thuộc vào kiến trúc hệ thống nhất định và yêu cầu - Cung cấp giá trị năng động và biến khối tĩnh của văn bản yêu cầu thay thế (Ví dụ, việc sử dụng # xác định với các thông số có thể thay thếcác đoạn mã với giá trị khác nhau được truyền cho nó) Điều này được thực hiện mà không cóvấn đề chi phí lập trình gây ra bởi việc sử dụng lặp đi lặp lại các chức năng 3 Thiết kế, xây dựng các chương trình tương ứng: (vai trò, ý nghĩa trong các gia đoạn xây dựng và hoạt động hệ thống) Mô-đun chi tiết: Chương trình chủ yếu chia thành hai phần chính Logic theo sau là một bộ xử lý hai vượt qua Đèo đầu tiên thực hiện quét cho các macro và làm cho một mục nhập của macro sẽ được tìm thấy trong mã nguồn chính Đèo thứ hai quét thay thế của các macro trong mã nguồn chính Trong các mô-đun, nó có thể được tiếp tục chia nhỏ cho các mô-đun nhỏ khác cho sự hiểu biết tốt và tinh tế hơn Đèo đầu tiên: Đèo đầu tiên thực hiện chức năng quét của các macro Các loại macro ở đây thường rất đơn giản Các mô-đun ở đèo đầu tiên thường có các chức năng kiểm tra lỗi và tập tin chuẩn bị Ví dụ về một trình biên dịch C: Thuật toán đèo 1: Tìm kiếm # xác định vị trí Nhập tên macro và gõ MNT(tên bảng macro) Nhập định nghĩa vĩ mô trong MDT(Mcro định nghĩa) Nhập bắt đầu và kết thúc của MDT trong MNT Macro một dòng có dấu hiệu khởi đầu của họ với các biểu tượng '#' và kết thúc với các ký tự xuống dòng '\ n' Do đó, nếu một dòng mới là gặp phải trước khi tên vĩ mô và định nghĩa, sau đó vĩ mô có trước khi kết thúc chín chắn Cuộc gặp gỡ như vậy không nên dừng lại công việc tiền xử lý, nhưng chỉ đơn thuần là làm nổi bật các lập trình viên là có lỗi với tờ khai vĩ mô Lỗi mà bỏ qua được đưa về chăm sóc trong các đường chuyền tiếp theo o Chức năng a) Kiểm tra lỗi: Lỗi được đánh dấu để các lập trình viên khi có yêu cầu, sửa chữa khác càng nhiều càng tốt Ví dụ, khoảng trắng thường không bao giờ được coi như một phần của thói quen biên dịch b) Tập tin Chuẩn bị: Macro được phát hiện và báo cáo thành công và chương trình đầu vào được lưu trữ trong một tập tin khác nhau mà không có các macro Tên vĩ mô và các định nghĩa được lưu trữ trong một cấu trúc Nhưng kiểm tra lỗi vẫn tiếp tục, hai biến mà giữ các giá trị cho tên vĩ mô và định nghĩa vĩ mô Các tập tin là một lựa 5 HỆ ĐIỀU HÀNH chọn tốt hơn nhưng số lượng của các macro có thể là rất lớn Mảng sẽ không phù hợp để giữ các giá trị như xử lý nhân vật mảng trong C rất nhạy cảm và tốn kém Vì vậy, mục cho các macro không nên được ghi vào file, nếu có bất kỳ sai sót trong quá trình quét đó đặc biệt vĩ mô Đèo thứ hai: Đèo thứ hai liên quan đến việc thay thế các macro và loại bỏ họ định nghĩa như họ không thẻ mà không có ý nghĩa để trình biên dịch Tuy nhiên, nó có nền tảng hơn quá trình chạy, trong quá trình hoàn thành thay thế các macro và chuẩn bị các mã nguồn thức Đèo thứ hai mô-đun có các tính năng: Error- Checking, quét cho các từ khóa,vĩ mô mở rộng, tập tin chuẩn bị Ví dụ về một trình biên dịch C: o Thuật toán đèo 2: Đọc chuỗi từ mã nguồn cho đến khi nhân vật phá vỡ tìm thấy được:S1 Tìm kiếm S1 trong MNT Nếu tìm thấy sau đó Take type, argc from MNT : T, argc (arg_index là chỉ số của các đối số; arg_name là đối số) If tt=”O” || argc=0 Có được bắt đầu,kết thúc chỉ số từ MNT nhập For i=start to end Extract MDT[i] Trích xuất thân cột B1 Sao chép B1 đến tập tin đích Đặt con trỏ tới dòng tiếp theo End for Sao chép nhân vật tĩnh để file đích Else Argtc=0 I=1 While ch = “)” Đọc ch từ tập tin While not ch = “,” Str=str+ch End while Set argt[i]=str Đọc tiếp theo ch End while For i=start to end Extract MDT[i] Trích xuất thân cột B1 :str1 Nếu không có # trong str1 6 HỆ ĐIỀU HÀNH Sao chép cột B1 đến tập tin đích Đặt con trỏ tới dong tiếp theo Else Finalstr=nul I=0 While i