{"id":13572559,"url":"https://github.com/AllenDowney/ThinkOS","last_synced_at":"2025-04-04T10:30:45.977Z","repository":{"id":15178661,"uuid":"17906501","full_name":"AllenDowney/ThinkOS","owner":"AllenDowney","description":"Text and supporting code for Think OS: A Brief Introduction to Operating Systems, by Allen Downey.","archived":false,"fork":false,"pushed_at":"2020-04-28T23:52:39.000Z","size":957,"stargazers_count":556,"open_issues_count":7,"forks_count":225,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-03-01T23:08:49.515Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AllenDowney.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-03-19T14:10:01.000Z","updated_at":"2025-01-02T18:32:29.000Z","dependencies_parsed_at":"2022-07-15T17:00:36.825Z","dependency_job_id":null,"html_url":"https://github.com/AllenDowney/ThinkOS","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllenDowney%2FThinkOS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllenDowney%2FThinkOS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllenDowney%2FThinkOS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllenDowney%2FThinkOS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AllenDowney","download_url":"https://codeload.github.com/AllenDowney/ThinkOS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247160219,"owners_count":20893794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T14:01:26.745Z","updated_at":"2025-04-04T10:30:45.642Z","avatar_url":"https://github.com/AllenDowney.png","language":"TeX","readme":"Think OS\n========\nA Brief Introduction to Operating Systems\n-----------------------------------------\nby Allen B. Downey\n\nDownload this book in PDF and HTML from http://greenteapress.com/thinkos\n\n\nCopyright 2014  Allen B. Downey.\n\nLicense: Creative Commons Attribution-NonCommercial 3.0 Unported License.\n\nhttp://creativecommons.org/licenses/by-nc/3.0/\n\n### Preface\n\nIn many computer science programs, Operating Systems is an advanced\ntopic.  By the time students take it, they usually know how to program\nin C, and they have probably taken a class in Computer Architecture.\nUsually the goal of the class is to expose students to the design\nand implementation of operating systems, with the implied assumption\nthat some of them will do research in this area, or write part of\nan OS.\n\nThis book is intended for a different audience, and it has different\ngoals.  I developed it for a class at Olin College called Software\nSystems.\n\nMost students taking this class learned to program in Python,\nso one of the goals is to help them learn C.\nFor that part of the class, I use Griffiths and Griffiths, Head\n  First C, from O'Reilly Media.  This book is meant to complement\nthat one.\n\nFew of my students will ever write an operating system, but many of\nthem will write low-level applications in C, and some of them will\nwork on embedded systems.  My class includes material\nfrom operating systems, networks, databases, and embedded systems, but\nit emphasizes the topics programmers need to know.\n\nThis book does not assume that you have studied Computer Architecture.\nAs we go along, I will explain what we need.\n\nIf this book is successful, it should give you a better understanding\nof what is happening when programs run, and what you can do to make\nthem run better and faster.\n\nChapter 1 explains some of the differences between compiled and\ninterpreted languages, with some insight into how compilers work.\nRecommended reading: Head First C Chapter 1.\n\nChapter 2 explains how the operating system uses processes to\nprotect running programs from interfering with each other.\n\nChapter 3 explains virtual memory and address translation.\nRecommended reading: Head First C Chapter 2.\n\nChapter 4 is about file systems and data streams.\nRecommended reading: Head First C Chapter 3.\n\nChapter 5 describes how numbers, letters, and other values are\nencoded, and presents the bitwise operators.\n\nChapter 6 explains how to use dynamic memory management, and how\nit works.\nRecommended reading: Head First C Chapter 6.\n\nChapter 7 is about caching and the memory hierarchy.\n\nChapter 8 is about multitasking and scheduling.\n\nChapter 9 will be about threads.\n\nChapter 10 will be about synchronization with POSIX mutexes and\ncondition variables.\n\n\n### A note on this draft\n\nThe current version of this book is an early draft.  While I am\nworking on the text, I have not yet included the figures.  So\nthere are a few places where, I'm sure, the explanation will be\ngreatly improved when the figures are ready.\n","funding_links":[],"categories":["TeX","Python"],"sub_categories":["General-Purpose Machine Learning"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAllenDowney%2FThinkOS","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAllenDowney%2FThinkOS","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAllenDowney%2FThinkOS/lists"}