• 【编译原理+句柄+入栈顺序从右至左+系统调用+win api+程序安排+acm ieee usenix信息】答疑


    编译原理

    编译原理–总结

    句柄

    句柄(handle),有两种解释

    第一种解释:句柄是一种特殊的智能指针 。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。

    第二种解释:整个Windows编程的基础。

    句柄是Windows用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。

    一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不在I/O文件中,它是毫无用处的。 句柄是Windows用来标志应用程序中建立的或是使用的唯一整数,Windows大量使用了句柄来标识对象。

    Windows之所以要设立句柄,根本上源于内存管理机制的问题,即虚拟地址。简而言之数据的地址需要变动,变动以后就需要有人来记录、管理变动,因此系统用句柄来记载数据地址的变更。在程序设计中,句柄是一种特殊的智能指针,当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。

    说明:

    句柄在 Windows编程中是一个很重要的概念,在 Windows程序中并不是用物理地址来标识一个内存块、文件、任务或动态装入模块的。相反地,Windows API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。

    应该明白的是,句柄是一个标识符,是用来标识对象或者项目的。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个Windows函数来获得一个句柄,之后其他的Windows函数就可以使用该句柄,以引用相应的对象。在 Windows编程中会用到大量的句柄。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    系统给每个进程UID

    子进程和父进程UID一样。
    用户也可以是某个组的成员 有GID

    C的参数入栈顺序从右至左--------历史原因

    在这里插入图片描述

    进程管理-系统调用

    fork()函数 ----父子进程返回PID不同,子进程为0,父进程返回子进程的PID

    cp file1 file2
    cp主程序都有声明 main(argc,argv,argp)
    argc是该命令行内有关参数数目的计数器 包括程序名称
    v 数组指针
    p指向环境的指针

    win api

    在这里插入图片描述

    win api

    微内核—策略与机制分离

    JVM----SUN公司发明—java基于c

    程序安排

    文本段接近内存底部 然后数据段 然后堆向上增长 栈在最上向下增长 ,

    现状

    目前操作系统是一个不灵活 不可靠 不安全 巨大错误的 粪坑大系统

    acm ieee usenix

  • 相关阅读:
    Python列表类型详解
    go语言 | 图解字节青训营抖音(一)
    Could not load dynamic library ‘libcudart.so.11.0‘; dlerror: libcudart.so.11.0:
    11 场面试无一被拒 Alibaba 金九银十面试参考指南(Java 版)真香
    电网运行信息检索系统的设计与实现
    【打卡】牛客网:BM45 滑动窗口的最大值
    算法学习——LeetCode力扣补充篇8(146. LRU 缓存、 215. 数组中的第K个最大元素、25. K 个一组翻转链表)
    前端 -- Flex布局
    20220809-PotPlayer如何设置默认字体色-设置默认字体色的方法
    使用paddleX体验
  • 原文地址:https://blog.csdn.net/weixin_43796670/article/details/126652586