UNIX基础概念

Wesley13
• 阅读 699

UNIX基本概念

进程

  • 从用户观点来看:进程是程序的一个执行实例。
  • 从UNIX系统内部来看,是为运行程序提供执行环境的实体,是系统进行资源分配和调度运行的一个单位。

进程有三个特点:

1)进程有一个控制点和自己的独立地址空间。进程的控制点通过程序计数器跟踪着程序的指令序列。进程的地址空间由进程可以引用或访问的存储单元组成。进程在其他地址空间内执行程序的指令序列。

2)进程具有生存期。进程从创建到消亡的过程称为进程的生存期。一个进程的生存期可以分为一组状态,这些状态刻画了进程从创建、活动到消亡的过程。从用户的观点祖略划分,UNIX系统中进程主要有以下状态:

  • 新建
  • 就绪:进程正在等待被执行
  • 运行
  • 阻塞:进程正在等待一个事件,如I/O
  • 僵死:进程已经结束,并等待释放资源。

进程的简单状态转换图:

UNIX基础概念

3)处于运行状态的进程有两种执行状态:用户态和核态。 若进程运行中执行的是用户程序中的指令,则进程处于用户态执行。当进程发出系统调用时,便进入核态执行。进程在核态下执行的是操作系统的指令,这些指令完成用户的请求,如输入输出、存储分配等。

内核

实现软件管理硬件系统任务的软件称为操作系统,在UNIX术语中称为UNIX内核。UNIX内核是一个底层的直接运行于硬件的程序,它控制着硬件,并创建、销毁和控制所有进程。

UNIX体系结构图:

UNIX基础概念

内核直接与硬件交互,向外提供UNIX系统调用接口,如read()、write()等。如shell以及date、ls和who之类的使用程序,通过系统调用请求内核完成各种操作,并在内核与调用程序之间交换数据。其他应用程序则在底层程序和工具的基础上构筑而成。

shell

UNIX内核负责管理和创建进程,用户的输入命令是由shell来执行。shell是UNIX系统中的一个命令解释程序,处于用户和UNIX系统之间,骑着协调用户与系统间的一致性、在用户与系统之间进行交互的作用。

shell和内核 、使用程序和应用之间的关系:

UNIX基础概念

shell种类:

  • sh
  • csh
  • ksh
  • bash

当系统同时存在多个shell时,/etc/password文件中用户注册账户登记项的最后一个字段标明应当使用哪一种sehll。

用户名与用户ID、用户组和组ID

每个用户有一个账号,改账号有一个用户名和一个唯一的用户ID。

用户可以组织成组,一个用户可以是一个或多个组的成员,其中一个组是用的初始组,简称组。如果该用户还属于其他组,则这些组称为该用户的附加组。用户组由系统管理员建立。/etc/group中登记了系统中存在的所有组和组ID,以及组内的用户。

/etc/password记录了系统中所有的注册用户,每个用户有一个登记项,其中包含用户名、用户ID、用户组ID(指明该用户的初始组)等信息 。

%grep zkj /etc/passwd zkj x: 500: 15: /home/zkj: /bin/bash
同时,在/etc/ group文件包含如下内容
grep zkj /etc/group users x: 15: zkj research: x: 17: Yang, zkj,
Hc, zhang Lib: x: 20: wang zki
那么,用户zk的用户D为500,组D为15。他是三个组的成员,这
三个组是: users、 research和Lib。其中, users是他的初始组,
research和Lib是他的附加组

特权用户

root(超级用户),用户ID为0。特权用户控制着整个系统的权力。

系统调用和库函数

系统调用时对操作系统的一种请求,它请求操作系统为用户程序完成某种工作。如:read()是一种系统调用,它请求操作系统将存贮在磁盘设备上的数据读入缓冲区。

为避免用户随意访问设备造成混乱,用户必须向操作系统请求服务,由操作系统统一管理请求并提供服务。==所有操作系统提供了定义好的、有限个数且直接进入内核的这类服务点,称为系统调用,也称程序设计与系统的接口==。

系统中无论使用什么技术实现系统调用,它的定义中式用C函数来表示。UNIX让每一个系统调用有一个相同名字的C函数,应用程序使用与标准C库函数相同的方法调用这些函数,这些函数然后用系统要求的技术来启动适当的内核服务。

库函数和系统调用不同,它可以不需要系统的介入来完成工作,并且也不是进入操作系统内核的入口点,尽管它们可以调用一至多个系统调用。如:printf需要调用write系统调用来完成输出,而复制 strcpy()和sin()则完全不需要操作系统的帮助。

应用程序和系统调用、库函数调用

UNIX基础概念

实现者角度,系统调用与库函数的区别:系统调用时UNIX内核提供的服务,而库函数处于内核之外;用户角度,没太大区分,系统调用和库函数均为普通的C函数,两者都服务于应用程序。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
限时发布!非科班程序员金三银四求职经历
进程和线程的概念进程是具有独立功能的程序在一个数据集合上运行的过程。进程是系统进行资源分配的单位,实现的操作系统的并发。线程是比进程更小的能独立运行的单位,是  调度的基本单位,实现了进程内部的并发。线程成为了程序执行流的最小单位。进程状态转换图1.创建状态:进程正在被创建。2.就绪状态:进程已经分配到了除  之外的所有资源,只要分配到  就可以开
Wesley13 Wesley13
3年前
Java并发基础
一、多线程基础知识1.进程和线程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。线程:进程内部的一个独立执行单元;一个进程可以同时并发的运行多个线程,
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Stella981 Stella981
3年前
Linux内核学习笔记(3)
一、进程创建:  Unix下的进程创建很特别,与许多其他操作系统不同,它分两步操作来创建和执行进程:fork()和exec()。首先,fork()通过拷贝当前进程创建一个子进程;然后,exec()函数负责读取可执行文件并将其载入地址空间开始运行。1、fork():kernel/fork.c  在Linux系统中,
Wesley13 Wesley13
3年前
Java中多线程并发体系知识点汇总
一、多线程1、操作系统有两个容易混淆的概念,进程和线程。进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。同一进
Wesley13 Wesley13
3年前
Java 基础夺命连环16问(面试硬核敲门砖 )
说说进程和线程的区别?进程是程序的一次执行,是系统进行资源分配和调度的独立单位,他的作用是是程序能够并发执行提高资源利用率和吞吐率。由于进程是资源分配和调度的基本单位,因为进程的创建、销毁、切换产生大量的时间和空间的开销,进程的数量不能太多,而线程是比进程更小的能独立运行的基本单位,他是进程的一个实体,可以减少程序并发执行时的时间和空间开销,