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

Linux/Unix系统编程手册第二章:基本概念

本章预热与后续系统编程有关的概念。术语“操作系统”通常包含2种含义:一是指完整的软件包,包括管理计算机资源的核心组件,已经附带的标准软件&

本章预热与后续系统编程有关的概念。

 

术语“操作系统”通常包含2种含义:一是指完整的软件包,包括管理计算机资源的核心组件,已经附带的标准软件;二是独指管理硬件的内核。

内核具有诸多概功能,包括:

  • 进程管理
  • 内存管理
  • 文件系统支持
  • 设备管理

在内核的管理下,操作系统会给每个用户营造一种抽象:虚拟化,即使得每个用户感觉自己在独占机器。

内核通过硬件将CPU分为2种状态,一种是用户态,又称目态;另一种是核心态,又称管态。两者区别是对CPU的限制,前面一种有很大限制,后一种无限制。

操作系统的一切活动都掌控在内核的控制下,在后面的编程过程中,需要使用内核角度来看到程序。程序要完成的很多功能,都是借助于内核的。例如,进程创建子进程,也是当前进程向内核请求,然后内核为其创建子进程,而不是进程自身的功能。甚至是程序的结束也不能由自身掌控,也是内核来控制的,程序告诉内核需要终止,内核进行终止工作,程序才能结束,否则不允许结束。

 

shell用来进行人机交互和命令解释,其实它是一个进程,是有系统创建的,shell中执行命令相当于C/C++中的函数调用,只不过shell是每执行一个命令时,创建出一个子进程,并复制一份当前的环境给子进程,然后在子进程中执行命令程序,完毕后销毁自身环境进行返回。所以shell脚本中导入的变量只对shell创建出的子shell进程有效,一旦返回就丢弃了,使用source命令来使得脚本在当前shell进程中进行执行。

 

Unix使用用户和组来对用户身份进行标识

 

Unix的文件系统是使用单根目录结构来维护的。

文件分为多种类型,包括:普通文件,设备文件,目录文件,管道文件等等。

文件系统中的文件目录有绝对和相对之分。

文件有所有权和文件名。

 

Unix系统提供文件I/O,Unix的文件I/O是通用的,也即文件I/O可以适用于所有文件类型,包括普通文件,设备文件,套接字文件。通用文件I/O屏蔽了下层的复杂细节,只要用同一套文件I/O就能处理任何类型文件。

本质上,内核只提供一直文件类型:字节流序列。

Unix系统没有文件结束符的概念,当读取文件时无数据返回,便认为文件结束。实际实现中,Linux是具有文件结束符的。

 

程序和进程:进程是程序在内存中的活动实体抽象。

进程分为两部分,一部分在用户内存空间,由程序使用;一部分在内核用户空间,有内核管理进程使用。

 

内存映射分为两种:文件映射和匿名映射。

 

程序库也分为两种:静态库和动态库。

 

信号:Unix中用来通信和同步的一种方法。

 

/proc文件系统,部分Unix有实现,Linux也实现了该特性。

 

以上是后面将涉及到的概念,后面将具体学习。

转:https://www.cnblogs.com/pluse/p/6286995.html



推荐阅读
  • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
  • Shell参数详解与应用
    本文详细介绍了Shell参数的种类及其应用,内容简洁明了,结构清晰。通过深入解析各类参数的功能和使用方法,旨在帮助读者更好地理解和掌握Shell编程技巧,提升实际操作能力。 ... [详细]
  • Windows环境下RabbitMQ安装详尽指南
    Windows环境下RabbitMQ安装详尽指南 ... [详细]
  • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
    MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
  • 【Linux】CentOS 7 远程连接指南:高效安全的远程管理方法
    在 CentOS 7 中实现高效且安全的远程管理,本文详细介绍了如何检查和安装配置 OpenSSH。首先,通过 `yum list installed` 命令检查系统是否已安装 OpenSSH,若未安装,则使用 `yum install openssh-server` 进行安装。随后,配置 SSH 服务以确保其安全性和稳定性,包括修改默认端口、禁用 root 登录等关键步骤。此外,还提供了常见问题的解决方案,帮助用户顺利进行远程连接。 ... [详细]
  • 利用Python与Android进行高效移动应用开发
    通过结合Python和Android,可以实现高效的移动应用开发。首先,需要安装Scripting Layer for Android (SL4A),这是一个开源项目,旨在为Android系统提供脚本语言支持。SL4A不仅简化了开发流程,还允许开发者使用Python等高级语言编写脚本,从而提高开发效率和代码可维护性。此外,SL4A还支持多种其他脚本语言,进一步扩展了其应用范围。通过这种方式,开发者可以快速构建功能丰富的移动应用,同时保持较高的灵活性和可扩展性。 ... [详细]
  • 本文详细解析了 `ulimit` 命令的使用方法及其在实际场景中的应用。`ulimit` 是一个 Shell 内置命令,用于控制 Shell 启动的进程所能使用的系统资源。文章介绍了 `ulimit` 的基本语法格式,包括 `-a`、`-c`、`-d`、`-f`、`-H`、`-l`、`-m`、`-n`、`-p`、`-s`、`-S`、`-t`、`-v` 和 `-w` 等参数的含义和用法。通过具体示例,读者可以更好地理解和应用这些参数,以优化系统性能和资源管理。 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • Python学习:环境配置与安装指南
    Python作为一种跨平台的编程语言,适用于Windows、Linux和macOS等多种操作系统。为了确保本地已成功安装Python,用户可以通过终端或命令行界面输入`python`或`python3`命令进行验证。此外,建议使用虚拟环境管理工具如`venv`或`conda`,以便更好地隔离不同项目依赖,提高开发效率。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • `chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • Linux 信号处理全面解析(第六篇)
    本文深入探讨了信号及其来源。信号本质上是对中断机制的软件层面模拟,从原理上看,进程接收到信号与处理器接收到中断请求类似。信号具有异步特性,能够在进程执行过程中随时触发,从而中断当前操作并执行相应的处理程序。文章详细分析了信号的生成、传递和处理机制,并讨论了常见的信号类型及其应用场景。此外,还介绍了如何在 Linux 系统中使用信号进行进程间通信和错误处理,为开发者提供了实用的技术指导。 ... [详细]
  • 全面解析:Hadoop技术栈中的Linux操作系统概览
    全面解析:Hadoop技术栈中的Linux操作系统概览 ... [详细]
author-avatar
汉臣Y
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有