没有合适的资源?快使用搜索试试~ 我知道了~
首页Pintos all projects
Pintos all projects
需积分: 10 10 下载量 34 浏览量
更新于2023-03-16
评论 1
收藏 537KB PDF 举报
Welcome to Pintos. Pintos is a simple operating system framework for the 80x86 architecture. It supports kernel threads, loading and running user programs, and a file system, but it implements all of these in a very simple way. In the Pintos projects, you and your project team will strengthen its support in all three of these areas. You will also add a virtual memory implementation.
资源详情
资源评论
资源推荐
Pintos
by Ben Pfaff
i
Short Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Project 1: Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3 Project 2: User Programs . . . . . . . . . . . . . . . . . . . . . . . . . 22
4 Project 3: Virtual Memory . . . . . . . . . . . . . . . . . . . . . . . . 39
5 Project 4: File Systems . . . . . . . . . . . . . . . . . . . . . . . . . . 50
A Reference Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
B 4.4BSD Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
C Coding Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
D Project Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . 99
E Debugging Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
F Development Tools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
G Installing Pintos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
ii
Table of Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Source Tree Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Building Pintos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.3 Running Pintos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.4 Debugging versus Testing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Grading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2.1 Design Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2.2 Source Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Legal and Ethical Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Trivia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 Project 1: Threads. . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Understanding Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.2 Source Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.2.1 ‘devices’ code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.2.2 ‘lib’ files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.3 Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.4 Development Suggestions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1 Design Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.2 Alarm Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.3 Priority Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.4 Advanced Scheduler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1 Alarm Clock FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.2 Priority Scheduling FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.3 Advanced Scheduler FAQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3 Project 2: User Programs . . . . . . . . . . . . . . . . . 22
3.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.1 Source Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.2 Using the File System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.3 How User Programs Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.4 Virtual Memory Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.4.1 Typical Memory Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1.5 Accessing User Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 Suggested Order of Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . 28
iii
3.3 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.1 Design Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.2 Process Termination Messages . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.3 Argument Passing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.4 System Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.5 Denying Writes to Executables. . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4 FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.1 Argument Passing FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.2 System Calls FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5 80x86 Calling Convention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5.1 Program Startup Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.5.2 System Call Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4 Project 3: Virtual Memory . . . . . . . . . . . . . . . . 39
4.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.1.1 Source Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.1.2 Memory Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.1.2.1 Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.1.2.2 Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.1.2.3 Page Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.1.2.4 Swap Slots. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.1.3 Resource Management Overview . . . . . . . . . . . . . . . . . . . . . . . . 41
4.1.4 Managing the Supplemental Page Table . . . . . . . . . . . . . . . . . 42
4.1.5 Managing the Frame Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.1.5.1 Accessed and Dirty Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.1.6 Managing the Swap Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.1.7 Managing Memory Mapped Files . . . . . . . . . . . . . . . . . . . . . . . 44
4.2 Suggested Order of Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.3 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.1 Design Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.2 Paging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.3 Stack Growth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3.4 Memory Mapped Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3.5 Accessing User Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4 FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5 Project 4: File Systems . . . . . . . . . . . . . . . . . . . 50
5.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.1 New Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.2 Testing File System Persistence . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.2 Suggested Order of Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.3 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.3.1 Design Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.3.2 Indexed and Extensible Files . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.3.3 Subdirectories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.3.4 Buffer Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.3.5 Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.4 FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
iv
5.4.1 Indexed Files FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.4.2 Subdirectories FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.4.3 Buffer Cache FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Appendix A Reference Guide . . . . . . . . . . . . . . . 58
A.1 Loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
A.1.1 The Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
A.1.2 Low-Level Kernel Initialization . . . . . . . . . . . . . . . . . . . . . . . . . 59
A.1.3 High-Level Kernel Initialization . . . . . . . . . . . . . . . . . . . . . . . . 59
A.1.4 Physical Memory Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
A.2 Threads. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
A.2.1 struct thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
A.2.2 Thread Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
A.2.3 Thread Switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
A.3 Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
A.3.1 Disabling Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
A.3.2 Semaphores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
A.3.3 Locks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
A.3.4 Monitors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
A.3.4.1 Monitor Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
A.3.5 Optimization Barriers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
A.4 Interrupt Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
A.4.1 Interrupt Infrastructure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
A.4.2 Internal Interrupt Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
A.4.3 External Interrupt Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
A.5 Memory Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
A.5.1 Page Allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
A.5.2 Block Allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
A.6 Virtual Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
A.7 Page Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
A.7.1 Creation, Destruction, and Activation. . . . . . . . . . . . . . . . . . . 79
A.7.2 Inspection and Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
A.7.3 Accessed and Dirty Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.7.4 Page Table Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.7.4.1 Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.7.4.2 Page Table Entry Format . . . . . . . . . . . . . . . . . . . . . . . . . 82
A.7.4.3 Page Directory Entry Format . . . . . . . . . . . . . . . . . . . . . . 83
A.8 Hash Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
A.8.1 Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
A.8.2 Basic Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
A.8.3 Search Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
A.8.4 Iteration Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
A.8.5 Hash Table Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
A.8.6 Auxiliary Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
A.8.7 Synchronization
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
剩余128页未读,继续阅读
weixin_34247449
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0