热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

现代操作系统

操作系统的定义##标题操作系统是管理硬件资源、控制程序运行、改善人机界面和为应用软件提供支持的一种系统软件。操作系统管理服务操作系统为应用提供的一些服务为应用提供计算资源的抽象CP

操作系统的定义## 标题
操作系统是管理硬件资源、控制程序运行、改善人机界面和为 应用软件提供支持的一种系统软件。
操作系统=管理+服务
操作系统为应用提供的一些服务
为应用提供计算资源的抽象
CPU:进程/线程,数量不受物理CPU的限制
内存:虚拟内存,大小不收物理内存的限制
I/O设备:将各种设备统一抽象为文件,提供统一接口
为应用提供线程间的同步
应用可以实现自己的同步原语(如spinlock)
操作系统提供了更高效的同步原语(与线程切换配合,如pthread_mutex)
为应用提供进程间的通信
应用可以利用网络进行进程间通信(如loopback设备)
操作系统提供了更高效的本地通信机制(具有更丰富的语义,如pipe)
操作系统对应用的管理
生命周期的管理
应用的加载、迁移、销毁等操作
计算资源的分配
CPU:线程的调度机制
内存:物理内存的分配
I/O设备:设备的复用与分配
安全与隔离
应用程序内部:访问控制机制
应用程序之间:隔离机制,包括错误隔离和性能隔离

中断和异常的区别:
中断(设备产生、异步):
可屏蔽:设备产生的信号,通过中断控制器与处理器相连,可别暂时屏蔽(如,键盘、网络事件)
不可屏蔽:一些关键硬件的崩溃(如,内存校验错误)
异常(软件产生、同步)
错误(Fault):如有缺页异常(可恢复)、段错误(不可恢复)等
陷阱(Trap):无需恢复,如断点(int 3)、系统调用(int 80)
中止(Abort):严重的错误,不可恢复(机器检查)

延续至今的中断控制器
GIC(通用中断控制器):中断类型较多,将中断分发给不同的核(对称或非对称)进行处理
主要功能:
分发:管理所有中断、决定优先级、路由
CPU接口:给每一个CPU核有对应的接口
案例:Linux的中断处理理念
在中断处理中做尽量少的事
推迟非关键行为
结构:Top half &Bottom half
Top half:做最少的工作后返回
Bottom half:推迟处理(softirq,tasklets,工作队列内核线程)

Linux追踪系统调用:
每当有系统调用产生时,Linux可打印发生的系统调用、系统调用的参数和系统调用的返回值
ptrace()可追踪Linux中的系统调用清况
—广泛应用在各种debugger中
命令行中
—strace追踪系统调用
—ltrace追踪库函数的调用


推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • top命令使用方法及解读
    本文介绍了top命令的使用方法和解读,包括查看进程信息、系统负载、内存状态、CPU占用等内容。通过top命令可以持续观察系统上运行的进程,并了解系统负载情况,及时关闭一些进程以减轻系统负担。同时,还介绍了top命令的快捷键和安全模式启动方法。通过本文的学习,读者可以更好地使用top命令来管理系统进程。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 树莓派Linux基础(一):查看文件系统的命令行操作
    本文介绍了在树莓派上通过SSH服务使用命令行查看文件系统的操作,包括cd命令用于变更目录、pwd命令用于显示当前目录位置、ls命令用于显示文件和目录列表。详细讲解了这些命令的使用方法和注意事项。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 在开发中,有时候一个业务上要求的原子操作不仅仅包括数据库,还可能涉及外部接口或者消息队列。此时,传统的数据库事务无法满足需求。本文介绍了Java中如何利用java.lang.Runtime.addShutdownHook方法来保证业务线程的完整性。通过添加钩子,在程序退出时触发钩子,可以执行一些操作,如循环检查某个线程的状态,直到业务线程正常退出,再结束钩子程序。例子程序展示了如何利用钩子来保证业务线程的完整性。 ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • 线程漫谈——线程基础
    本系列意在记录Windwos线程的相关知识点,包括线程基础、线程调度、线程同步、TLS、线程池等。进程与线程理解线程是至关重要的,每个进程至少有一个线程,进程是线程的容器,线程才是真正的执行体,线程必 ... [详细]
  • UNIX高级环境编程 第11、12章 线程及其属性
    第11章线程11.2线程概念线程资源:线程ID,一组寄存器,栈,调度优先级和策略,信号屏蔽字,e ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有