Awesome Open Source
Awesome Open Source

The Top 201 C Plus Plus Operating System Open Source Projects on Github

Categories > Programming Languages > C Plus Plus
Categories > Operating Systems > Operating System
In this lab, you are required to complete a virtual memory implementation, including how to get a physical frame for a virtual page from the IPT if it exists there, how to put a physical frame/virtual page entry into TLB, and how to implement a least recently used page replacement algorithm. A software-managed TLB is implemented in Nachos. There is one TLB per machine. There is also an IPT which maps physical frames to virtual pages. Basically, the translation process first examines the TLB to see if there is a match. If so, the matching entry in the TLB will be used for address translation. If there is a miss, the IPT will be looked up. If a matching entry is found in the IPT, the entry will be used to update the TLB. A miss in the IPT means that the page will have to be loaded from disk, and a page in and page out will be performed. To decide which page to page out, a page replacement policy is used, for example, a least recently used algorithm which will be explained late on. During each lookup process, you need to perform some checking in order to make sure that you are looking up the correct entry and that the entry is valid. In order to check whether you are referencing the correct entries from the TLB, you have to check the valid bit. The TLB will get updated when an exception is raised and the required page entry isn't in it. In this case, a new entry needs to be inserted into the TLB. The new entry will be inserted into an invalid entry in the TLB or replace an existing entry if it is full. Since the TLB is small, the replacement policy for the TLB is simply FIFO. When there is a context switch between processes, e.g. the main process executing a child process, the entries in the TLB will be cleared by setting all entries to invalid. The IPT is simply implemented using an array, represented by the memoryTable (a mapping of what pages are in memory and their properties). There is one entry for each of the physical frame, and each entry contains the corresponding process id, virtual page number, and the last used field that records the tick value when the page was last accessed. The least recently used algorithms works by iterating through the memoryTable, from the beginning, to look for the entry that has been least recently used. If there is an entry that is not valid (i.e., its process is dead), the algorithm will return the index of this invalid entry. Otherwise, the algorithm will return the index of the least recently used entry (that is, the entry with the smallest last used field).
1-100 of 201 projects

Related Projects

C Plus Plus Projects (371,475)
C Plus Plus Arduino Projects (4,864)
C Plus Plus Algorithms Projects (2,168)
C Plus Plus Qt Projects (1,923)
C Plus Plus Opengl Projects (1,871)
Python C Plus Plus Projects (1,764)
C Plus Plus Linux Projects (1,652)
C Plus Plus Cpp17 Projects (1,641)
C Plus Plus Windows Projects (1,580)
C Plus Plus Data Structures Projects (1,554)
C Plus Plus Cpp11 Projects (1,473)
C Plus Plus Opencv Projects (1,227)
C Plus Plus Cmake Projects (1,201)
C Plus Plus Library Projects (1,199)
C Plus Plus Esp32 Projects (1,029)
C Plus Plus Algorithms Data Structures Projects (965)
C Plus Plus Hacktoberfest Projects (963)
C Plus Plus Game Engine Projects (880)
Java C Plus Plus Projects (865)
C Plus Plus Machine Learning Projects (862)
C Plus Plus Cpp14 Projects (835)
C Plus Plus Android Projects (825)
C Plus Plus Game Development Projects (796)
C Operating System Projects (783)
C Plus Plus Computer Vision Projects (695)
C Plus Plus Cross Platform Projects (692)
C Plus Plus Header Only Projects (670)
C Plus Plus Deep Learning Projects (660)
Javascript C Plus Plus Projects (644)
C Plus Plus Graphics Projects (603)
C Plus Plus Compiler Projects (590)
C Plus Plus Linux Windows Projects (590)
C Plus Plus Vulkan Projects (557)
C Plus Plus Leetcode Projects (537)
C Plus Plus Image Processing Projects (516)
C Plus Plus Gui Projects (494)
C Plus Plus Macos Projects (494)
C Plus Plus Nodejs Projects (462)
C Plus Plus Arduino Esp32 Projects (460)
C Plus Plus C Sharp Projects (423)
Kernel Operating System Projects (419)
C Plus Plus Neural Network Projects (409)
C Plus Plus Json Projects (403)
C Plus Plus Gamedev Projects (400)
Operating System Os Projects (394)
C Plus Plus Cryptocurrency Projects (385)
C Plus Plus Gpu Projects (384)
C Plus Plus Open Source Projects (374)
C Plus Plus Emulator Projects (363)
C Plus Plus Lua Projects (361)
C Plus Plus Database Projects (353)
C Plus Plus Cpp20 Projects (343)
C Plus Plus Linux Macos Projects (315)
C Plus Plus R Projects (313)
Python Java C Plus Plus Projects (302)
C Plus Plus Reverse Engineering Projects (301)
C Plus Plus Ios Projects (285)
C Plus Plus Interpreter Projects (284)
C Plus Plus Visual Studio Projects (284)
C Plus Plus Http Projects (282)
C Plus Plus Artificial Intelligence Projects (282)
C Plus Plus Cpp11 Cpp14 Projects (278)
C Plus Plus Framework Projects (276)
C Plus Plus Windows Macos Projects (276)
C Plus Plus Ai Projects (271)
C Plus Plus Cryptography Projects (269)
C Plus Plus Network Projects (268)
C Plus Plus Unreal Engine Projects (264)
C Plus Plus Real Time Projects (257)
C Plus Plus Clang Projects (250)
C Plus Plus Linux Windows Macos Projects (246)
C Plus Plus Imgui Projects (233)
C Plus Plus Cpp17 Cpp14 Projects (230)
C Plus Plus Computer Vision Opencv Projects (228)
C Plus Plus Tool Projects (226)
C Plus Plus 3d Graphics Projects (218)
C Plus Plus Security Projects (216)
Html C Plus Plus Projects (215)
C Plus Plus Cpp17 Cpp11 Projects (208)
Javascript Java C Plus Plus Projects (206)
C Plus Plus Simulator Projects (205)
C Plus Plus Bitcoin Projects (203)
C Plus Plus Game Development Engine Projects (41)
C Plus Plus Modern Projects (34)